Mysql PDO:连接到数据库服务器(不是特定的数据库名称)
目前我通过此连接到数据库服务器Mysql PDO:连接到数据库服务器(不是特定的数据库名称),mysql,pdo,database-connection,Mysql,Pdo,Database Connection,目前我通过此连接到数据库服务器 @$db_connect = mysql_connect('localhost','user','xxx', true); 由于在同一查询中使用多个数据库进行查询,我必须连接到数据库服务器(不是特定的数据库名称) 有谁能建议我如何使用PDO做同样的事情吗?即使要跨多个数据库查询,您仍然需要在PDO$dsn中选择一个数据库。这其实不是问题,因为在查询中,您将使用模式dbname.tablename.columnname。当仅对$dsn中实际指定的数据库进行查询时,
@$db_connect = mysql_connect('localhost','user','xxx', true);
由于在同一查询中使用多个数据库进行查询,我必须连接到数据库服务器(不是特定的数据库名称)
有谁能建议我如何使用PDO做同样的事情吗?即使要跨多个数据库查询,您仍然需要在PDO
$dsn
中选择一个数据库。这其实不是问题,因为在查询中,您将使用模式dbname.tablename.columnname
。当仅对$dsn
中实际指定的数据库进行查询时,不需要使用dbname
当然,您需要为连接中指定的用户授予所有数据库的权限
// Need more than just testdb, but specify it here anyway
// It doesn't matter which one you choose here- pick the one you'll use the most I suppose
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
// Query across 2 databases, and specify aliases for the dbname.tablename
$stmt = $dbh->prepare("
SELECT
tdb.col1,
other.col2
FROM
testdb.table1.col1 AS tdb
JOIN otherdb.table2.col2 AS other
ON tdb.col1 = other.col2
");
你可以在PDO中做同样的事情。的
dbname
属性是可选的
$db = new PDO('mysql:host=localhost', $user, $pass);
但是,在这种情况下,您需要执行
use databasename
或确保所有查询都使用格式SELECT*FROM databasename.tablename
谢谢Michael、Ken和user113215。我明白了。事实上,dbname是可选的,据我所知,实际上并没有在任何地方记录。谢谢你提到这件事。