SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.12.2012 19:06:15

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

подключение нескольких баз к сайту

Возникла ситуация подключить к сайту еще одну БД.

это допустим основная
$db = mysql_connect ("localhost","root","");
mysql_select_db ("baze1",$db);

это дополнительная
$db = mysql_connect ("localhost","root","");
mysql_select_db ("baze2",$db);

Подскажите как правильно написать код для подключения еще одной базы? И как дать понять запросам с какой базой нужно работать, ведь на одной странице их может быть несколько?

Неактивен

 

#2 26.12.2012 19:15:12

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: подключение нескольких баз к сайту

$db_1 = mysql_connect ("localhost","root","");
mysql_select_db ("baze1",$db_1);

это дополнительная
$db_2 = mysql_connect ("localhost","root","");
mysql_select_db ("baze2",$db_2);


Где надо с основной поработать базой - тянетесь через $db_1, где с дополнительной - через $db_2.

И не забываем проверять на ошибку результаты, возвращаемые функциями mysql_connect и mysql_select_db wink.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 26.12.2012 20:09:17

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: подключение нескольких баз к сайту

почему то не работет( оставляю одно подключение к $db_1, все работает, когда добавляю второе подключение $db_2, перестает работать!?

Я проверил на ошибки smile показало
пoдключение к серверу mysql прошло успешно, идентификатор соединения - Resource id #3


Notice: Undefined variable: myrow in Z:\home\vdonbasse\www\block\online.php on line 13
[Денвер: показать возможную причину ошибки]
Notice: Constant _JEXEC already defined in Z:\home\vdonbasse\www\block\online.php on line 18

Notice: Constant _JEXEC already defined in Z:\home\vdonbasse\www\index.php on line 97

Notice: Constant _JEXEC already defined in Z:\home\vdonbasse\www\index.php on line 99

на строках 97,99... такой код  <?php define( '_JEXEC', 1 ); $n=1; include ("block/main_menu.php"); ?> я связываю это define( '_JEXEC', 1 );

а в main_menu
<?php defined('_JEXEC') or die("<html><head>
<meta http-equiv='Refresh' content='0; URL=../index.php'>
</head></html>");?>

только не могу понять что на что влияет ???

Неактивен

 

#4 26.12.2012 20:21:51

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: подключение нескольких баз к сайту

Создайте простенький тестовый пример, в котором Вы подключаетесь к двум базам, из каждой выбираете  немножко данных и выводите всё это на экран. Приложите сюда код примера и код вывода (с максимальной диагностикой, конечно).
И еще - при вызове функции mysql_query  - Вы в нужный вызов нужный идентификатор передаёте?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 26.12.2012 20:34:26

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: подключение нескольких баз к сайту

$db = mysql_connect ("localhost","root","");
mysql_select_db ("soft-mai_vdonb10",$db);
mysql_query("SET NAMES 'cp1251'");

$db2 = mysql_connect ("localhost","root","");
mysql_select_db ("soft-mai_parab73",$db2);
mysql_query("SET NAMES 'cp1251'");


$result = mysql_query("SELECT * FROM users WHERE id='307'",$db);
$myrow = mysql_fetch_array($result);
echo $myrow["nik"]

$result2 = mysql_query("SELECT * FROM users WHERE id='307'",$db2);
$myrow2 = mysql_fetch_array($result2);
echo $myrow2["nik"]

по отдельности подключение и выборка №1 и №2 работают. всесте нет

Неактивен

 

#6 26.12.2012 20:41:34

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: подключение нескольких баз к сайту

кстати, при выыоде двух подключений и двух запросов - ошибка
Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in Z:\home\vdonbasse\www\index.php on line 28

Неактивен

 

#7 26.12.2012 20:42:42

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: подключение нескольких баз к сайту

Как я понял, Вы подключаетесь к одному серверу. Тогда лучше просто вот так делать:
$result_1 = mysql_query("SELECT * FROM soft-mai_vdonb10.users WHERE id='307'",$db);
$result_2 = mysql_query("SELECT * FROM soft-mai_parab73.users WHERE id='307'",$db);


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#8 26.12.2012 20:49:43

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: подключение нескольких баз к сайту

serj011 написал:

кстати, при выводе двух подключений и двух запросов - ошибка
Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in Z:\home\vdonbasse\www\index.php on line 28

И что же там расположено на строке 28?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#9 26.12.2012 20:51:27

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: подключение нескольких баз к сайту

deadka написал:

Как я понял, Вы подключаетесь к одному серверу.

В данном случае да, я тестирую на локальном. А вообще сервера будут разные!

Но это тоже не работает, даже в таком виде!

$db = mysql_connect ("localhost","root","");
mysql_select_db ("soft-mai_vdonb10",$db);
mysql_query("SET NAMES 'cp1251'");

$result = mysql_query("SELECT * FROM soft-mai_vdonb10.users WHERE id='307'",$db);
$myrow = mysql_fetch_array($result);
echo $myrow["nik"]

а в таком работет

$db = mysql_connect ("localhost","root","");
mysql_select_db ("soft-mai_vdonb10",$db);
mysql_query("SET NAMES 'cp1251'");

$result = mysql_query("SELECT * FROM users WHERE id='307'",$db);
$myrow = mysql_fetch_array($result);
echo $myrow["nik"]


????????????

Отредактированно serj011 (26.12.2012 20:53:58)

Неактивен

 

#10 26.12.2012 20:55:30

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: подключение нескольких баз к сайту

deadka написал:

И что же там расположено на строке 28?

$result2 = mysql_query("SELECT * FROM users WHERE id='308'",$db2);

Отредактированно serj011 (26.12.2012 20:56:35)

Неактивен

 

#11 26.12.2012 21:00:14

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: подключение нескольких баз к сайту

В этой строке синтаксически всё выглядит корректно (я правда не понял, зачем Вы оборачиваете целое число 308 в одинарные кавычки), значит ошибка в соседних.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#12 26.12.2012 21:04:02

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: подключение нескольких баз к сайту

serj011 написал:

deadka написал:

Как я понял, Вы подключаетесь к одному серверу.

В данном случае да, я тестирую на локальном. А вообще сервера будут разные!

Но это тоже не работает, даже в таком виде!

????????????

У Вас там явно какая-то синтаксическая трабла. Возьмите за основу мой рабочий скрипт, только что создал и проверил, работает исправно, и его доращивайте (faun и f - две разные базы с одинаковыми по структуре таблицами).

<?php
    error_reporting(E_ALL);

    $db = mysql_connect ("localhost","ЛОГИН","ПАРОЛЬ");

    $result = mysql_query("SELECT mnemonic as nik FROM faun.species_type limit 1",$db);
    $myrow = mysql_fetch_array($result);
    echo $myrow["nik"] . "<br />\n";

    $result = mysql_query("SELECT mnemonic as nik FROM f.species_type limit 1",$db);
    $myrow = mysql_fetch_array($result);
    echo $myrow["nik"] . "<br />\n";

?>


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#13 26.12.2012 21:07:59

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: подключение нескольких баз к сайту

deadka написал:

я правда не понял, зачем Вы оборачиваете целое число 308 в одинарные кавычки), значит ошибка в соседних.

может и не нужно оборачивать..., но суть то не в кавычках) а в том что не получается подключить две базы.
а вы пробовали таким путем подключать? глупый вопрос, наверное пробовали)) я понимаю что я могу ошибиться и в двух строчках)), но в этом случае врятли. вот почему не работает, понять не могу!?

А может не пробовали? )))))

Неактивен

 

#14 26.12.2012 21:11:14

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: подключение нескольких баз к сайту

Вы как-то пропустили мой предыдущий пост №12, в нём приведен рабочий пример подключения к двум базам. Что касается двух строчек, в которых Вы могли и ошибиться - чем троллить, Вы бы лучше их привели wink, глядишь и нашлась бы ошибка. Ну или правда что воспользуйтесь пока тем, что я привёл чуть выше.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#15 26.12.2012 21:17:11

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: подключение нескольких баз к сайту

я не пропустил, а писал видимо свой пост одновременно с вашим)))
я доработал

error_reporting(E_ALL);

     $db = mysql_connect ("localhost","root","");

     $result = mysql_query("SELECT nik FROM soft-mai_vdonb10.users limit 1",$db);
     $myrow = mysql_fetch_array($result);
     echo $myrow["nik"] . "<br />\n";

     $result = mysql_query("SELECT nik FROM soft-mai_parab73.users limit 1",$db);
     $myrow = mysql_fetch_array($result);
     echo $myrow["nik"] . "<br />\n";


выдает ошибку
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\vdonbasse\www\index.php on line 31
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\vdonbasse\www\index.php on line 35
31 и 35 строка это - $myrow = mysql_fetch_array($result);

Неактивен

 

#16 26.12.2012 23:14:18

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: подключение нескольких баз к сайту

А на ошибки кто будет проверять?
FAQ №2

В вашем случае вместо soft-mai_vdonb10.users нужно `soft-mai_vdonb10`.`users`

Неактивен

 

#17 27.12.2012 00:28:58

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: подключение нескольких баз к сайту

Теперь работает) Но проблемма не решена. У меня сервера баз данных будут разные, поэтому это решение мне не подходит

vasya, может вы подскажете. Почему не работает код, который изначально предлагал использовать deadka?

$db = mysql_connect ("localhost","root","");
mysql_select_db ("soft-mai_vdonb10",$db);
mysql_query("SET NAMES 'cp1251'");

$db2 = mysql_connect ("localhost","root","");
mysql_select_db ("soft-mai_parab73",$db2);
mysql_query("SET NAMES 'cp1251'");


$result = mysql_query("SELECT * FROM users WHERE id='307'",$db);
$myrow = mysql_fetch_array($result);
echo $myrow["nik"]

$result2 = mysql_query("SELECT * FROM users WHERE id='307'",$db2);
$myrow2 = mysql_fetch_array($result2);
echo $myrow2["nik"]

В чем может быть ошибка?

Неактивен

 

#18 27.12.2012 00:51:41

serj011
Активист
Зарегистрирован: 22.04.2010
Сообщений: 234

Re: подключение нескольких баз к сайту

Я немного разобрался)))
у меня к сайту подключена одна база
$db = mysql_connect ("localhost","root","");
mysql_select_db ("soft-mai_vdonb10",$db);
mysql_query("SET NAMES 'cp1251'");

если я подключаю другую
$db2 = mysql_connect ("localhost","root","");
mysql_select_db ("soft-mai_parab73",$db2);
mysql_query("SET NAMES 'cp1251'");

...то все пропало))) запросы перестают работать

если изменить старые запросы, и добавить к таблице базу (`soft-mai_vdonb10`.`users`), о ЧУДО запрос работает.
Вопрос в следующем, мне теперь нужно по всему сайту переделывать все запросы? Их больше 100.

Или я не до конца разобрался?

Неактивен

 

#19 27.12.2012 01:57:10

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: подключение нескольких баз к сайту

Прочитал тредик. Меня реально очень сильно смущает отсутствие точек с запятыми
после echo во всех приведенных примерах. В остальном должно работать, кажется.

Также интересен таки вывод mysql_error в местах, где происходит ошибка.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson