2011-08-03 34 views
2

事情是,我需要用mysqli編寫一個數據庫類,它應該支持多個連接到不同的數據庫。 我知道多個連接不好,但我沒有其他選擇。php分類與mysqli,它支持多個連接

如果有什麼好的類支持多連接的例子嗎?

當我開始寫課程時,您是否知道我應該考慮的任何提示?我的最佳做法是什麼?

由於提前,

想到的
+0

你可以看看http://stackoverflow.com/questions/1384191/how-to-make-a-proper-mysqli-extension-class-with-prepared-statements和http://stackoverflow.com/questions/274892/how-do-you-connect-to-multiple-mysql-databases-on-a-single-page來獲得第一個想法。 – Quasdunk

+1

爲什麼'多個連接不好'?還有什麼其他方式可以連接到更多的服務器或使用異步查詢? – Mchl

+0

@Quasdunk謝謝,我已經看過了這個話題和其他我在StackOverflow上找到的。 – kaha

回答

2

第一件事,是一個容器類,即存儲庫MySQLi它的對象。 事情是這樣的:

class MySQLiContainer extends SplObjectStorage{ 
    public function newConnection($host = null, $username = null, $passwd = null, $dbname = null, $port = null, $socket = null) { 
    $mysqli = new mysqli($host, $username, $passwd, $dbname, $port, $socket); 
    $this->attach($mysqli); 
    return $mysqli; 
    } 
} 

//usage 

$mysqliContainer = new MySQLiContainer(); 

$c1 = $mysqliContainer->newConnection('localhost','root','root','localDatabase'); 
$c1->query('SELECT ....'); 

$c2 = $mysqliContainer->newConnection('mysql.remotehost.net','hackermom','bobbytables','schoolDatabase'); 

$name = 'Robert\'); DROP TABLE students;--'; 

$c2->multi_query("SELECT * FROM students WHERE name = '$name'"); 

不知道更多關於所需的功能,這是很難說,如果這是一個好主意,雖然;)

更多信息有關SplObjectStorage類。

+0

@Mchi,非常感謝,我查看了您的代碼。這很清楚。不確定需要什麼功能。我目前正在閱讀關於mysqli。如果我有任何與此有關的問題,我會在這裏寫下。 – kaha

+0

你應該問一個更詳細的新問題。如果沒有,請記住你可以編輯你的問題。不要在評論中添加任何新信息;) – Mchl