2011-08-03 15 views
2

mysqliを使用してdbクラスを作成する必要があり、異なるデータベースへの複数の接続をサポートする必要があります。 複数の接続が悪いことは知っていますが、他に選択肢はありません。複数の接続をサポートするmysqliを使用したphp dbクラス

複数の接続をサポートするクラスの良い例があれば、

クラスの作成を開始する際に考慮する必要があるヒントをご存知ですか?私の場合のベストプラクティスは何ですか?事前に

おかげで、頭に浮かぶ

+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-you-do-you-multiple-mysql-databases-on-a-single-webpageが最初のアイデアを得ます。 – Quasdunk

+1

なぜ複数の接続が悪いのですか? 2つ以上のサーバーに接続する方法や非同期クエリを使用する方法は他にありますか? – 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

関連する問題