【发布时间】:2017-04-02 13:31:09
【问题描述】:
我原来有一个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));
【问题讨论】:
-
在输入
['userid'=>$user_id]执行时使用命名参数:userid而不是?。 -
@Xorifelse 我可以像这样把那些在执行中的人灌进去吗?执行(数组(':userid', $user_id, $status_one));
-
更新了评论,但请记住,您不能混合使用它们,所以必须命名。
-
@Xorifelse 谢谢。我不知道你能做到这一点。随时留下答案,因为这有帮助。
标签: php mysql sql pdo prepared-statement