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");

如何使用这些成功地将其转换为 PDO STMT?:

$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 回答