在PDO中切换多个数据库

时间:2012-03-06 17:26:10

标签: php

我是PDO的新手。我想知道PDO中是否有类似于mysql_select_db的内容,这样我就可以在运行时在不同的数据库之间切换而无需创建新对象。

5 个答案:

答案 0 :(得分:25)

我知道我迟了几个月但您应该可以在查询中切换数据库。

的示例:

$sql = "SELECT * FROM dbname.tablename";

$sql = "SELECT * FROM anotherdbname.anothertablename"

因此,即使您的原始$ pdo对象使用'blahblah'作为dbname,基于我提供的选择示例,您仍然可以。

答案 1 :(得分:19)

看起来PDO没有数据库切换,因为并非每个数据库引擎都支持它。

AFAIK PostgreSQL没有数据库切换,但提供模式,你可以在这些模式之间切换。

但是如果你使用mysql检查这是否适合你:

$pdo = new PDO('mysql:dbname=db1;host=127.0.0.1','user','pass');

$sql = 'select count(*) from table_name';

$res = $pdo->query($sql);
print_r($res->fetchAll());

$pdo->exec('USE db2');

$res = $pdo->query($sql);
print_r($res->fetchAll());

答案 2 :(得分:9)

实际上,您根本不需要在连接时指定数据库。只要您在每个查询中指定数据库,如Laz所述,这将起作用:

$dbh = new PDO('mysql:host=127.0.0.1','USER','PASS');

$query = "SELECT * FROM database1.table1";
$query = "SELECT * FROM database2.table1";

答案 3 :(得分:6)

如果您想在运行时使用这两个PDO对象,则需要为单独的连接创建两个PDO对象。

编辑:@laz下面的有趣点(我猜测是我回答的负面投票的原因)。我假设数据库位于不同的服务器tbh,我的答案就是这样。

答案 4 :(得分:5)

您甚至不需要在每个查询中指定数据库,只需使用msyql语法

 USE db_name

然后写下您的请求