3

現在、これでデータベースサーバーに接続しています

@$db_connect = mysql_connect('localhost','user','xxx', true);

同じクエリで複数のデータベースを使用するクエリのため、データベース サーバー (特定のデータベース名ではない) に接続する必要があります。

PDOで同じことを行う方法を誰かに教えてもらえますか?

4

2 に答える 2

2

$dsn複数のデータベースに対してクエリを実行する場合でも、 PDO 内のデータベースの 1 つを選択する必要があります。クエリで pattern を使用するため、これは実際には問題になりません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
");
于 2012-10-28T17:35:30.713 に答える
1

PDOでも同じことができます。MySQLDSN文字列dbname属性はオプションです。

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

use databasenameただし、この場合、すべてのクエリでフォーマットを使用するか、実行する必要がありますSELECT * FROM databasename.tablename

于 2012-10-28T17:39:48.720 に答える