2

我正在考虑用 php 连接到我的项目中的 2 个数据库。

一个是我们票务系统中使用 MS ACESS 的现有数据库,另一个是我现在使用的 MYSQL。

MS 访问的使用只是从中检索数据,而 MYSQL 将用于检索和存储数据。

是否可以同时连接到两个数据库?

4

2 回答 2

5

简短的回答:的。

长答案:
您应该确保您的代码始终使用连接标识符以避免混淆并具有干净、可读的代码。(特别是当您使用 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);
}

正如您在上面看到的,两个数据库驱动程序的代码在语法上有所不同——这就是我建议使用 PDO 的原因。

PDO 将避免很多麻烦,并且如果您决定稍后再切换到另一个数据库驱动程序,它将使切换到另一个数据库驱动程序变得更加容易。它抽象了所有数据库驱动程序,并为您提供了一个简单的界面来使用相同的语法处理它们。

于 2012-04-24T06:37:04.420 回答
2

例如,如果您使用的是PDO,那是可能的。只需为每个连接创建一个 pdo-object - 只需将mysql-driver 用于 mysqlodbc-connection 用于 access

于 2012-04-24T06:32:35.170 回答