Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Работа с несколькими БД
quickxyan  
 ۩  [x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сейлормун
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1652
Пользователь №: 24882
На форуме: 6 лет, 6 месяцев, 8 дней
Карма: 21




Функция подключения к БД

function connect($db_host, $db_user, $db_pass, $db_name){
$host = mysql_escape_string($db_host);
$login = mysql_escape_string($db_user);
$pass = mysql_escape_string($db_pass);
$db = mysql_escape_string($db_name);
$link=mysql_connect($host, $login, $pass);
mysql_select_db($db, $link);
$result=mysql_query("SET NAMES UTF8"); // т.е. ваша кодировка
@mysql_fetch_assoc($result);
return $link;
}


Использую так

$con = connect('localhost', 'root', '', 'db');
$sql = "SELECT * FROM `table`";
$result = mysql_query($sql) or die('error');
$row = mysql_fetch_assoc($result);
mysql_close($con);
unset($con);

$con = connect('localhost1', 'root1', 'root1', 'db1');
$sql = "SELECT * FROM `table1`";
$result = mysql_query($sql) or die('error1');
$row = mysql_fetch_assoc($result);
mysql_close($con);
unset($con);


Смотрю переменную $con.
con=Resource id #4
con=Resource id #6

то есть подключается нормально, но вот например второй запрос на выборку не работает.

Сейчас тестю на одной и той же БД (подключаюсь, отключаюсь, подключаюсь, отключаюсь). То есть данные для доступа в обеих случаях одинаковые
Правильно ли я делаю или где-то есть ошибка?



Спустя 9 минут, 7 секунд (6.02.2012 - 15:08) ZSH написал(а):
mysql_query($sql,$con);

второй параметр ссылка на идентификатор соединения с базозй данных

Спустя 43 секунды (6.02.2012 - 15:08) quickxyan написал(а):
Таксс, mysql_close($con) убрал. Вроде теперь работает и выставил каждому подключению отдельную переменную для подключения $con1, $con2

Вот нашел
Цитата

Если у баз данных один пользователь, то можно просто написать:
Select
*
from
`db-name`.`table-name`

И все должно заработать. По крайней мере в Mysql 4 все работает на отлично.


Спустя 1 минута, 15 секунд (6.02.2012 - 15:10) quickxyan написал(а):
ZSH
спасибо, буду экспериментировать дальше.


Спустя 14 секунд (6.02.2012 - 15:10) Winston написал(а):
Так
Цитата (quickxyan @ 6.02.2012 - 13:59)
но вот например второй запрос на выборку не работает.

Какой запрос?
Можно так попробовать
Свернутый текст
$con = connect('localhost', 'root', '', 'db');
$sql = "SELECT * FROM `table`";
$result = mysql_query($sql, $con) or die('error');
$row = mysql_fetch_assoc($result);
mysql_close($con);
unset($con);

$con = connect('localhost1', 'root1', 'root1', 'db1');
$sql = "SELECT * FROM `table1`";
$result = mysql_query($sql, $con) or die('error1');
$row = mysql_fetch_assoc($result);
mysql_close($con);
unset($con);

Цитата (quickxyan @ 6.02.2012 - 13:59)
$db    = mysql_escape_string($db_name);
$link=mysql_connect($host, $login, $pass);

Хм... а mysql_escape_string у тебя разве работает до соединения с БД? :blink: И зачем ты обрабатываешь вообще данные для коннекта это ф-ей? :huh:

Спустя 4 минуты, 19 секунд (6.02.2012 - 15:14) killer8080 написал(а):
Цитата (Winston @ 6.02.2012 - 14:10)
Хм... а mysql_escape_string у тебя разве работает до соединения с БД?

работает, это же не mysql_real_escape_string, только там он нужен как корове седло.

Спустя 4 минуты, 23 секунды (6.02.2012 - 15:19) Winston написал(а):
Блин, а мне показалось mysql_real_escape_string unsure.gif

Спустя 7 минут, 8 секунд (6.02.2012 - 15:26) quickxyan написал(а):
Winston
killer8080

с седлом согласен smile.gif закралась эта проверка в код и даже не знаю когда smile.gif
Да работает, но все равно убрал.


Спустя 19 минут, 29 секунд (6.02.2012 - 15:45) quickxyan написал(а):
в общем странно как-то получается. Сначала не работал запрос на добавление в БД. Потом после шаманств заработал, но дальше уже идет еще один запрос на выборку, а он уже не работает :(
Подключение есть. Запрос рабочий проверял в PMA. А вот уже

$result = mysql_query($sql, $con7);
echo $result;

ПУСТО.

Спустя 1 минута, 48 секунд (6.02.2012 - 15:47) Winston написал(а):
$result = mysql_query($sql, $con7) or die(mysql_error());
echo $result;

Спустя 6 минут, 46 секунд (6.02.2012 - 15:54) quickxyan написал(а):
Неожиданно

Цитата

No database selected


хотя имя БД идет в функцию.......

Спустя 13 минут, 41 секунда (6.02.2012 - 16:08) quickxyan написал(а):
Бррррр, нашел smile.gif

Я брал данные для подключения из разных файлов. В первом было все правильно, а во втором первая буква БД не та. Вот так вот и получилась чихорда.
Спасибо за помощь мужики!


--------------------
печатаю со скоростью 320 минут в знак...

плюсуем карму не стесняемся
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса