【发布时间】:2019-09-16 22:27:59
【问题描述】:
我正在尝试执行一个查询,该查询通过以下查询使用相同的外键连接多个表,但它返回 false。
$question_id = 11406;
$query = $db->prepare("SELECT q.question_attempts_permitted, q.question_range, a.answer_text, r.attempt_count
FROM checkup_questions q, checkup_answers a, user_responses r
WHERE a.question_id=:question_id AND q.question_id=:question_id AND r.question_id=:question_id");
$query->bindValue(':question_id', $question_id, PDO::PARAM_INT);
$query->execute();
但是,如果我直接注入 question_id,查询将返回所需的结果。
$query = $db->prepare("SELECT q.question_attempts_permitted, q.question_range, a.answer_text, r.attempt_count
FROM checkup_questions q, checkup_answers a, user_responses r
WHERE a.question_id=11406 AND q.question_id=11406 AND r.question_id=11406");
$query->execute();
bindValue 接口是否存在一些限制导致第一个查询失败而第二个查询按预期返回?
【问题讨论】:
-
您不能多次使用同一个占位符。句号。
-
啊好的。那么如何处理像上面的例子一样需要多次引用同一个值的情况呢?
-
使用不同的占位符,不是吗?或查询中的正确
JOIN。 -
在这种特殊情况下:
WHERE a.question_id=:question_id AND q.question_id=a.question_id AND r.question_id=a.question_id。虽然你应该使用JOIN语法 - 那么解决方案可能很明显。 -
@PaulSpiegel - 谢谢我现在看到了这个问题。