下面的查询运行良好,运行速度非常快。然而,它显示了一些非常奇怪的行为,如下所述。
然而,在PHP中,它似乎自己决定它将起作用的哪些ID。我确信代码是正确的。我在PHP中使用PDO并根据需要绑定变量。
因此,例如,如果我将它传递给author_id 600它将起作用,但是如果我将它传递给author_id 2它将无法工作并且不会返回任何记录。但是,如果我回应查询并将其粘贴到MySQL并运行它,它适用于两个ID。似乎PDO无法在某些ID上绑定变量。我已经回显了id变量,它确实包含正确的id。
还有其他人遇到过这种行为吗?我发现它非常不寻常。
SELECT
GROUP_CONCAT(a.author_id) AS author_ids
FROM
references_final AS rf
INNER JOIN (reference_authors AS ra INNER JOIN authors_final AS a ON (ra.author_id = a.author_id))
ON (rf.reference_id = ra.reference_id)
GROUP BY rf.reference_id HAVING :author_id IN (author_ids)
答案 0 :(得分:0)
嘿,我的PDO语句中的BindParam和ID值存在同样的问题
$retrieveUsersToken = $dataBase->prepare('SELECT TheUsersTable.token AS token, TheUsersTable.myID AS myID,
FROM TheUsersTable INNER JOIN TheCategoryListTable ON TheUsersTable.myID = TheCategoryListTable.userID
WHERE TheUsersTable.myID != :userID AND TheCategoryListTable.category = :category');
$retrieveUsersToken->bindParam( ':category', $_POST['category'], PDO::PARAM_STR);
$retrieveUsersToken->bindParam( ':userID', $_POST['creatorID'], PDO::PARAM_INT);
myID!= userID永远不会有效 neighter做TheCategoryListTable.category =:category when:category包含空格 看起来Inner Join在我们的两种情况下都会产生麻烦。
这不是一个真正的答案,但也许binValue会更好。