用PHP连接两个不同的数据库?

Ber*_*ert 2 php mysql ms-access odbc

我想在php的项目中连接到2个数据库.

一个是我们的票务系统中使用MS ACESS的现有数据库,另一个是即时使用其MYSQL的数据库.

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

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

Kai*_*aii 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);
}
Run Code Online (Sandbox Code Playgroud)

没有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);
}
Run Code Online (Sandbox Code Playgroud)

如上所示,两个数据库驱动程序的代码语法不同 - 这就是我建议使用PDO的原因.

PDO将避免很多麻烦,并且如果您稍后决定这样做,将更容易切换到另一个数据库驱动程序.它抽象所有数据库驱动程序,并为您提供一个简单的接口,以相同的语法处理它们.