Возможно ли открыть соединения с двумя схемами на одном сервере с помощью PHP 5.3 / ADODB5 / SQL Server 2008? Вот что я пытаюсь:
// 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);
Либо один работает один, но запросы терпят неудачу, если оба одновременно открыты. Обратите внимание, что все одно и то же, кроме имени базы данных.
Несколько мест, которые я смотрел, сказали, что вы можете опустить имя сервера во второй строке подключения, например:
$conn-> Connect(false, $user, $password, $dbNameMain);
Но это дало мне ошибки (записи, открытые против $ conn, не являются допустимыми объектами).
Я могу открывать и закрывать разные соединения, поскольку они мне нужны, но для удобства обслуживания я хотел бы установить все мои подключения в верхней части моих скриптов, а затем закрыть их все внизу.
Спасибо за любую помощь.
Это быстрый класс, который я сделал, чтобы вы могли подключиться к 3 базам данных с помощью 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; } }
Ниже приведен пример использования этого класса:
$sql = "SELECT * FROM *"; $results1 = Data::dbOne()->Execute($sql); $results2 = Data::dbTwo()->Execute($sql); $results3 = Data::dbThree()->Execute($sql);
Я нашел это http://phplens.com/lens/adodb/docs-adodb.htm#ex6 (они инициализируют AdoConnection по ссылке). Надеюсь, это поможет.