現在、これでデータベースサーバーに接続しています
@$db_connect = mysql_connect('localhost','user','xxx', true);
同じクエリで複数のデータベースを使用するクエリのため、データベース サーバー (特定のデータベース名ではない) に接続する必要があります。
PDOで同じことを行う方法を誰かに教えてもらえますか?
現在、これでデータベースサーバーに接続しています
@$db_connect = mysql_connect('localhost','user','xxx', true);
同じクエリで複数のデータベースを使用するクエリのため、データベース サーバー (特定のデータベース名ではない) に接続する必要があります。
PDOで同じことを行う方法を誰かに教えてもらえますか?
$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
");
PDOでも同じことができます。MySQLDSN文字列のdbname
属性はオプションです。
$db = new PDO('mysql:host=localhost', $user, $pass);
use databasename
ただし、この場合、すべてのクエリでフォーマットを使用するか、実行する必要がありますSELECT * FROM databasename.tablename
。