Создение нескольких объектов pear(DB) для работы с двумя бд

sniper_9

Новичок
Создение нескольких объектов pear(DB) для работы с двумя бд

Всем привет. Помогите в разрешении ситуации. Существуют 2 сайта подбора персонала. На одном из них хранятся вакансии обоих сайтов. Так вот. Я хочу сделать 2 объекта pear_db для работы на одном из них, чтобы работать по вакансиям с другим сайтом, а остальные данные брать со своего.

Код:

options = array(
'debug' => 2,
'portability' => MDB2_PORTABILITY_ALL,
);



$e_dsn = array(
'phptype' => 'mysql',
'username' => 'root',
'password' => '',
'hostspec' => 'localhost',
'database' => 'e-adviser'
);

$mdb1 = MDB2::factory('mysql'); // подсоединяемся к e-adviser
// uses MDB2::factory() to create the instance
// and also attempts to connect to the host
$mdb1 = MDB2::connect($e_dsn,$options);
if (PEAR::isError($mdb1)) {

die($mdb1->getMessage());
}

$it_dsn = array(
'phptype' => 'mysql',
'username' => 'root',
'password' => '',
'hostspec' => 'localhost',
'database' => 'it-adviser'
);
$mdb2 = MDB2::factory('mysql'); // подсоединяемся к it-adviser
// uses MDB2::factory() to create the instance
// and also attempts to connect to the host
$mdb2 = MDB2::connect($it_dsn,$options);
if (PEAR::isError($mdb2)) {

die($mdb2->getMessage());
}

В результате коннект создаётся тольок к it-adviser,а нужно чтоб указатели были на коннект к обоим.
 

zerkms

TDD infected
Команда форума
В результате коннект создаётся тольок к it-adviser,а нужно чтоб указатели были на коннект к обоим.
а соединение с e-adviser вообще происходит?
 

sniper_9

Новичок
Да. происходит. Сейчас выяснил, что одно подключение перекрывает другое.
 

zerkms

TDD infected
Команда форума
Сейчас выяснил, что одно подключение перекрывает другое.
а ты можешь говорить устоявшимися терминами, а не выдумывать свои?
первый объект у тебя хранится в $mdb1
после создания второго объекта с $mdb1 что-то происходит. ты веришь в такую магию? я - нет.
 

sniper_9

Новичок
* Create a new MDB2 object for the specified database type
*
* IMPORTANT: In order for MDB2 to work properly it is necessary that
* you make sure that you work with a reference of the original
* object instead of a copy (this is a PHP4 quirk).
*
* For example:
* $db =& MDB2::factory($dsn);
* ^^
* And not:
* $db = MDB2::factory($dsn);


Вот так вот работает:

$options = array(
'debug' => 2,
'portability' => MDB2_PORTABILITY_ALL,
);



$e_dsn = array(
'phptype' => 'mysql',
'username' => 'root',
'password' => '',
'hostspec' => 'localhost',
'database' => 'e-adviser'
);

$mdb1 = &MDB2::factory($e_dsn,$options); // подсоединяемся к e-adviser
// uses MDB2::factory() to create the instance
// and also attempts to connect to the host
//$mdb1 = MDB2::connect($e_dsn,$options);
if (PEAR::isError($mdb1)) {

die($mdb1->getMessage());
}


$it_dsn = array(
'phptype' => 'mysql',
'username' => 'root',
'password' => '',
'hostspec' => 'localhost',
'database' => 'it-adviser'
);
$mdb2 = &MDB2::factory($it_dsn,$options); // подсоединяемся к it-adviser
 

zerkms

TDD infected
Команда форума
кто до сих пор возится с пеаром, подскажите плиз:
почему версия с передачей по значению (без &) "не работает", а по ссылке (с &) - работает?
я, например, ситуацию придумать не могу, когда было бы так
 
Сверху