私のプロジェクトでphpで2つのデータベースに接続することを考えています。
1 つは MS ACESS を使用する発券システムの既存のデータベースで、もう 1 つは現在 MYSQL を使用しているデータベースです。
MS アクセスは、そこからデータを取得するためだけに使用され、MYSQL はデータの取得と保存の両方に使用されます。
両方のデータベースに同時に接続できますか??
簡単な答え:はい。
長い答え:
混乱を避け、クリーンで読みやすいコードにするために、コードで常に接続識別子を使用するようにする必要があります。(特に、ODBC や PDO などの抽象化レイヤーを使用して両方のデータベースに接続する場合)
PDO と接続管理に関する PHP マニュアルを参照してください。
例:
$link_mysql = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$link_msaccess = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\test.mdb");
// query MySQL DB
foreach($link_mysql->query('SELECT * FROM test') as $row) {
print_r($row);
}
// query MS Access DB
foreach($link_msaccess->query('SELECT * FROM omg_its_access') as $row) {
print_r($row);
}
PDO なしの例:
$link_mysql = mysql_connect("localhost", $user, $pass);
mysql_select_db("test", $link_mysql);
$link_msaccess = odbc_connect("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\test.mdb");
// you may omit the link identifier for MySQL, but i suggest to use it explicitly
$res1 = mysql_query('SELECT * FROM test', $link_mysql);
while ($row = mysql_fetch_row($res1)) {
print_r($row);
}
// for ODBC the link identifier is mandatory
$res2 = odbc_exec($link_msaccess, 'SELECT * FROM omg_its_access');
while ($row = odbc_fetch_row($res2)) {
print_r($row);
}
上記のように、2 つのデータベース ドライバーのコードは構文が異なります。そのため、PDO を使用することをお勧めします。
PDO は多くの手間を省き、後でそうすることにした場合に、別のデータベース ドライバーに簡単に切り替えることができます。すべてのデータベース ドライバーを抽象化し、それらすべてを同じ構文で処理するためのシンプルなインターフェイスを提供します。
たとえば、PDOを使用している場合、それは可能です。接続ごとに 1 つの pdo-object を作成するだけです。mysql にはmysql-driver を使用し、アクセスにはodbc-connection を使用します。