我原来有一个SQL语句,这个:
SELECT *, COUNT(friend_one) AS pending_count , COUNT(friend_two) AS requests_sent
FROM friends
WHERE friend_one OR friend_two = ?
AND status = ?
我在其中分配了我的参数:
$pending_friend_count_stmt->execute(array($user_id, $status_one));
但是,查询没有得到我想要的结果。有人向我展示了一种不同的方法,但它多次包含变量 $user_id
,所以我不知道如何调整代码才能使用参数。
你可以在这里看到新的查询:
我能做到吗
SELECT COUNT(CASE WHEN `friend_one` = ? THEN 1 END) as `requests_count`,
COUNT(CASE WHEN `friend_two` = ? THEN 1 END) as `pending_count`
FROM `friends`
WHERE ? IN ( `friend_one` , `friend_two` )
AND `status` = ?
$pending_friend_count_stmt->execute(array($user_id, $user_id, $user_id $status_one));
最佳答案
使用 PDO,您可以使用命名参数,但是在您的问题中,您希望对多个值使用 1 个参数,这意味着必须开启仿真:
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
现在您可以执行以下操作:
$stmt = $db->prepare("SELECT * FROM table WHERE userid = :userid AND userid = :userid");
$stmt->excecute([
':userid' => 1
]);
导致:
"SELECT * FROM table WHERE userid = 1 AND userid = 1"
关于php - 在 pdo execute 中多次分配相同的参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40681463/