Идентификатор соединения с mysql

vjs

Новичок
Идентификатор соединения с mysql

$link1=mysql_pconnect("localhost", "root", "");
mysql_select_db("db1", $link1);
$link2=mysql_pconnect("localhost", "root", "");
mysql_select_db("db2", $link2);

echo "link1: $link1<br>";
echo "link2: $link2<br>";

$result=mysql_query("select name from test where id='1'", $link1);
$row=mysql_fetch_array($result);
echo $row["name"];

В результате выходит name из базы db2, а не из db1
Почему то игнорируется указатель на соединение, хотя link1 и link2 разные.
Подскажите, плз, где ошибка.
 

craz

Нестандартное звание
http://www.cyberforum.ru/php-database/thread53178.html


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

в вашем случае просто переписываем
PHP:
$link1=mysql_pconnect("localhost", "root", ""); 
$db1 = mysql_select_db("db1", $link1); 
//это нам уже не нужно мы уже соединились с базой - $link2=mysql_pconnect("localhost", "root", ""); 
$db2 = mysql_select_db("db2", $link1);  
echo "db1: $db1<br>"; 
echo "db2: $db2<br>";  
$result=mysql_query("select name from test where id='1'", $db1); 
$row=mysql_fetch_array($result); 
echo $row["name"];
Вроде так
 

zerkms

TDD infected
Команда форума
1. зачем тебе pconnect?
2. ты пробовал выводить link1 и link2?
 

vjs

Новичок
через pconnect link1 и link2 выводят:
Resource id #8
Resource id #9
через connect:
Resource id #8
Resource id #8
 

craz

Нестандартное звание
Автор оригинала: zerkms
1. зачем тебе pconnect?
2. ты пробовал выводить link1 и link2?
ващет он пробывал я так понял
PHP:
echo "link1: $link1<br>";
echo "link2: $link2<br>";
 

vjs

Новичок
> zerkms
попробовал с mysql_connect, селект идет по прежнему из db2.
уточните, плиз, что вы имели в виду

> craz
ругается на эту строчку, так как db1 в данном случае не является идентификатором на соединение
$result=mysql_query("select name from test where id='1'", $db1);
 

craz

Нестандартное звание
Автор оригинала: vjs
> craz
ругается на эту строчку, так как db1 в данном случае не является идентификатором на соединение
$result=mysql_query("select name from test where id='1'", $db1);
блин да туплю(

-~{}~ 15.10.09 11:29:

Автор оригинала: zerkms

craz
http://ru.php.net/mysql_select_db
сначала читать - потом советовать.
так?

mysql_connect('localhost','root','',$link1);
mysql_connect('localhost','root','',$link2);

echo $link1;
echo $link2;


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

vjs

Новичок
> zerkms
еще раз прочитал, докладываю )
мне нужно несколько параллельных соединений, поэтому я использовал pconnect, замена линка на актуальный не подходит, нужно именно получать ид каждого из них
если вы сталкивались уже с решением такой задачи, поделитесь пожалуйста, буду очень благодарен
 

craz

Нестандартное звание
Автор оригинала: vjs
> zerkms
еще раз прочитал, докладываю )
мне нужно несколько параллельных соединений, поэтому я использовал pconnect, замена линка на актуальный не подходит, нужно именно получать ид каждого из них
если вы сталкивались уже с решением такой задачи, поделитесь пожалуйста, буду очень благодарен
pconnect - создает постоянное соединение а не паралельное, zerkms вроде бы правильно советуют, а вот если нужно два постоянных соединения с двумя разными базами я даже не знаю как быть... хотя и зачем это нужно я тоже не очень представляю


mysql_pconnect() работает аналогично mysql_connect() с двумя отличиями. Во-первых, при соединении, функция пытается найти уже открытый (постоянный) указатель на тот же сервер с тем же пользователем и паролем. Если он найден, возвращён функцией будет именно он, вместо открытия нового соединения. Во-вторых, соединение с SQL-сервером не будет закрыто, когда работа скрипта закончится. Вместо этого, оно останется рабочим для будущего использования (mysql_close() также не закрывает постоянные соединения) Опциональный параметр client_flags появился в PHP 4.3.0. Соединения такого типа называют 'постоянными'.
у вас следовательно ну не как не получиться два постоянных соединения создать
Если он найден, возвращён функцией будет именно он, вместо открытия нового соединения.
 

vjs

Новичок
задача соединяться к базе через идентификатор, а не к текущей активной
 

craz

Нестандартное звание
Автор оригинала: vjs
задача соединяться к базе через идентификатор, а не к текущей активной
PHP:
mysql_connect('localhost','root','',$link1); mysql_connect('localhost','root','',$link2);  echo $link1; echo $link2;
так попробовали?
 

zerkms

TDD infected
Команда форума
vjs
расскажи, что ты прочитал о 4 аргументе функции mysql_connect?

craz
скройся.
 

craz

Нестандартное звание
Автор оригинала: zerkms
craz
скройся.
не хочу мне тоже интересно)

все я короче даже проверил)
$link1= mysql_connect('localhost','root','',true);
$link2 = mysql_connect('localhost','root','',true);
echo $link1;
echo $link2;
вот так работает
 

craz

Нестандартное звание
Автор оригинала: *****
вот и читай, если интересно. молча
ну смысл то помочь человеку, правильно, я вон тоже не сразу увидел что там булевая переменная, а не указатель



resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]] )

bool new_link - вот если быть точным
 

vjs

Новичок
> zerkms
большое спасибо.
поставил для mysql_connect 4 аргумент в true, все заработало.
 
Сверху