我想在php中连接到我项目中的2个数据库。
一个是我们的票务系统中使用MS ACESS的现有数据库,另一个是即时使用其MYSQL的数据库。
使用MS访问只是从中检索数据,MYSQL将用于检索和存储数据。
是否可以同时连接到两个数据库?
答案 0 :(得分:5)
简短回答:是。
答案很长:
您应确保代码始终使用连接标识符以避免混淆并具有干净,可读的代码。 (特别是当您使用ODBC或PDO等抽象层连接到两个数据库时)
请查看PHP Manual on PDO and connection management
示例:
$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将避免很多麻烦,并且如果您稍后决定更容易切换到另一个数据库驱动程序。它抽象所有数据库驱动程序,并为您提供一个简单的界面,以相同的语法处理它们。
答案 1 :(得分:2)
如果您正在使用PDO,那么可能。只需为每个连接创建一个pdo-object - 只需使用mysql-driver for mysql和odbc-connection for access。