PHP: conéctese a dos bases de datos simultáneamente en el mismo servidor utilizando ADBDB

¿Es posible abrir conexiones a dos esquemas en el mismo servidor utilizando PHP 5.3 / ADODB5 / SQL Server 2008? Esto es lo que estoy intentando:

// Connect to users database $connUsers = NewADOConnection('mssql'); $connUsers-> Connect($server, $user, $password, $dbNameUsers); $connUsers->SetFetchMode(ADODB_FETCH_ASSOC); // Connect to main database $conn = NewADOConnection('mssql'); $conn-> Connect($server, $user, $password, $dbNameMain); $conn->SetFetchMode(ADODB_FETCH_ASSOC); 

Cualquiera de los dos funciona solo, pero las consultas fallan si ambas están abiertas al mismo tiempo. Tenga en cuenta que todo es igual excepto el nombre de la base de datos.

Un par de lugares que miré dijeron que puedes omitir el nombre del servidor en la segunda cadena de conexión, como esta:

 $conn-> Connect(false, $user, $password, $dbNameMain); 

Pero esto me dio errores (los conjuntos de registros abiertos contra $ conn no son objetos válidos).

Puedo abrir y cerrar diferentes conexiones cuando las necesito, pero para mantenerlas me gustaría establecer todas mis conexiones en la parte superior de mis scripts y luego cerrarlas todas en la parte inferior.

Gracias por cualquier ayuda.

Esta es una clase rápida que hice que debería permitirle conectarse a 3 bases de datos usando adoDB:

 class Data { private static $_dbOne = null; private static $_dbTwo = null; private static $_dbThree = null; protected function __construct() { } /** * This function returns the database connection object * @return Object Database Connection */ public static function dbOne() { include_once(LIBRARY_PATH.'adodb5/adodb.inc.php'); if (null === self::$_dbOne) { $_connOne = 'mysql://username:password@www.server.com/database'; self::$_dbOne = &ADONewConnection($_connOne); if (self::$_dbOne==false) { die('Could not connect to the database.'); } } return self::$_dbOne; } /** * This function returns the database connection object * @return Object Database Connection */ public static function dbTwo() { include_once(LIBRARY_PATH.'adodb5/adodb.inc.php'); if (null === self::$_dbTwo) { $_connTwo = 'mysql://username:password@www.server.com/database'; self::$_dbTwo = &ADONewConnection($_connTwo); if (self::$_dbTwo==false) { die('Could not connect to the database.'); } } return self::$_dbTwo; } } /** * This function returns the database connection object * @return Object Database Connection */ public static function dbThree() { include_once(LIBRARY_PATH.'adodb5/adodb.inc.php'); if (null === self::$_dbThree) { $_connThree = 'mysql://username:password@www.server.com/database'; self::$_dbThree = &ADONewConnection($_connThree); if (self::$_dbThree==false) { die('Could not connect to the database.'); } } return self::$_dbThree; } } 

Aquí hay un ejemplo de cómo usaría esta clase:

 $sql = "SELECT * FROM *"; $results1 = Data::dbOne()->Execute($sql); $results2 = Data::dbTwo()->Execute($sql); $results3 = Data::dbThree()->Execute($sql); 

Encontré este http://phplens.com/lens/adodb/docs-adodb.htm#ex6 (se inicializan AdoConnection por referencia). Espero que te ayude