1

PDOテクノロジーを使用してmysql_*クエリをプリペアドステートメントに変換するためのサポートをお願いしたいと思います。それらの多くは、インターネット上で適切に解決する方法を見つけることができません。たとえば、次のような高度なものがほとんどです。

mysql_query("SELECT * FROM pet_auction JOIN people ON (pet_auction.pet=people.guid) 
            LEFT OUTER JOIN login.account ON (pet_auction.winner=login.account.id)
            WHERE active=1 AND seller=$userid ORDER BY id DESC");

これらを使用してPDOSTMTに正常に変換するにはどうすればよいですか?:

$people = new PDO("mysql:host=localhost;dbname=people", "myuser", "mypass");
$login = new PDO("mysql:host=localhost;dbname=login", "myuser", "mypass");

LEFT OUTER JOINすでにテストしているので、それ以外の場合は誤りになります...複数のデータベースを一緒に変換する方法がわかりません。

4

2 に答える 2

2

データベースごとにpdoオブジェクトを開く必要はありません。myuserにログインデータベースと人データベースの両方へのアクセスを許可するだけです。次に、次のようにクエリします。

$dbh = new PDO("mysql:host=localhost;dbname=people", "myuser", "mypass");
$stmt= $dbh->prepare("SELECT * FROM pet_auction JOIN people ON (pet_auction.pet=people.guid) 
        LEFT OUTER JOIN login.account ON (pet_auction.winner=login.account.id)
        WHERE active=1 AND seller=:userid ORDER BY id DESC");
$stmt-> execute(array(':userid' => $userid));
$variable = $stmt->fetch(PDO::FETCH_ASSOC);
于 2012-06-07T15:32:34.240 に答える
0
$dbh = new PDO($dsn, "myuser", "mypass");
$select = $dbh->prepare("SELECT * FROM `table`");
$select -> execute();
$variable = $select->fetch(PDO::FETCH_ASSOC);

ここで、$ dsnは、「mysql:dbname = racerost_reekris_db; host=localhost」を含む文字列です。

クエリには、結合を含む任意のmySQLクエリを含めることができます。

于 2012-06-07T15:27:04.687 に答える