我正在考虑用 php 连接到我的项目中的 2 个数据库。
一个是我们票务系统中使用 MS ACESS 的现有数据库,另一个是我现在使用的 MYSQL。
MS 访问的使用只是从中检索数据,而 MYSQL 将用于检索和存储数据。
是否可以同时连接到两个数据库?
简短的回答:是的。
长答案:
您应该确保您的代码始终使用连接标识符以避免混淆并具有干净、可读的代码。(特别是当您使用 ODBC 或 PDO 等抽象层连接到两个数据库时)
例子:
$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);
}
正如您在上面看到的,两个数据库驱动程序的代码在语法上有所不同——这就是我建议使用 PDO 的原因。
PDO 将避免很多麻烦,并且如果您决定稍后再切换到另一个数据库驱动程序,它将使切换到另一个数据库驱动程序变得更加容易。它抽象了所有数据库驱动程序,并为您提供了一个简单的界面来使用相同的语法处理它们。
例如,如果您使用的是PDO,那是可能的。只需为每个连接创建一个 pdo-object - 只需将mysql-driver 用于 mysql和odbc-connection 用于 access。