我是PDO的新手。我想知道PDO中是否有类似于mysql_select_db的内容,这样我就可以在运行时在不同的数据库之间切换而无需创建新对象。
答案 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
然后写下您的请求