PDO:连接到数据库服务器(不是特定的数据库名称)

时间:2012-10-28 16:51:26

标签: mysql pdo database-connection

目前我通过此

连接到数据库服务器
@$db_connect = mysql_connect('localhost','user','xxx', true);

由于在同一查询中使用多个数据库进行查询,我必须连接到数据库服务器(不是特定的数据库名称)。

有人可以建议我如何用PDO做同样的事情吗?

2 个答案:

答案 0 :(得分:2)

您仍需要选择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
");

答案 1 :(得分:1)

您可以在PDO中执行相同的操作。 MySQL DSN stringdbname属性是可选的。

$db = new PDO('mysql:host=localhost', $user, $pass);

但是,在这种情况下,您需要执行use databasename或确保所有查询都使用格式SELECT * FROM databasename.tablename