2013-03-27 3 views
2

PHP 5.3/ADODB5/SQL Server 2008을 사용하여 동일한 서버에서 두 개의 스키마에 대한 연결을 열 수 있습니까? 다음은 내가 시도한 것입니다 :PHP - ADBDB를 사용하여 동일한 서버에서 동시에 두 데이터베이스에 연결

// 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에 대해 열려 유효 개체 수없는 나에게 오류를 준).

필자는 다른 연결을 열고 닫을 수 있지만 유지 관리를 위해 모든 연결을 내 스크립트 맨 위에 설정 한 다음 맨 아래에 모든 연결을 닫고 싶습니다.

도움 주셔서 감사합니다.

+0

그것은이다 : 여기

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:[email protected]/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:[email protected]/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:[email protected]/database'; self::$_dbThree = &ADONewConnection($_connThree); if (self::$_dbThree==false) { die('Could not connect to the database.'); } } return self::$_dbThree; } } 

는이 클래스를 사용하는 방법의 예입니다 ADOdb를 사용한 이후로 얼마 동안은 FAQ를 사용했지만 문제를 설명하는 여러 연결에 대한 대답이 포함되어 있습니다. http://adodb.sourceforge.net/adodb-faq.html – thaJeztah

+0

그래, 나는 게시하기 전에 거기에서도 보았다. 아무것도 사용할 수 없습니다. 그래도 답장을 보내 주셔서 감사합니다. – Stanton

답변

0

찾을 수 있음 http://phplens.com/lens/adodb/docs-adodb.htm#ex6 (참조로 AdoConnection을 초기화 함). 도움이되기를 바랍니다.

+0

그래, 나는 내가 대답을 찾고있을 때 그것을 보았다. 그러나 그것은 더 이상 지원되지 않는다. 이 스레드를보십시오 : http://stackoverflow.com/questions/11777908/strict-standards-only-variables-should-be-assigned-by-reference-php-5-4. 그래도 답장을 보내 주셔서 감사합니다. – Stanton

+0

참조로 NewAdoConnection을 초기화하려고 시도 했습니까? – fntlnz

1

이 내가 그건 당신이 ADODB 사용하여 3 데이터베이스에 연결할 수 있도록해야했다 빠른 클래스 :

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