mysql不会返回正确的结果

时间:2014-02-05 13:59:11

标签: php mysql sql pdo

我正在尝试使用此SQL在我的简单论坛上实现搜索:

SELECT t.topic_id, t.`topic_title` , t.author_id, t.`creation_date` , u.username
FROM  `forum_topics` t
LEFT JOIN  `users` u ON t.author_id = u.user_id
AND MATCH (
t.`topic_title`
)
AGAINST (
? IN BOOLEAN MODE
)
ORDER BY t.creation_date DESC 
LIMIT 0 , 30

所以它只是匹配标题上的单词,我遇到的问题是它每次都会返回相同的结果,无论单词是什么。在phpmyadmin中测试它没有给我任何用户名,这意味着连接不起作用,我不知道为什么author_id匹配user_id罚款。

我错过了哪些是如此明显我无法看到它?

1 个答案:

答案 0 :(得分:2)

是的,问题很明显。您正在使用left join,即使没有匹配也能保持一切。将条件移动到where子句:

SELECT t.topic_id, t.`topic_title` , t.author_id, t.`creation_date` , u.username
FROM  `forum_topics` t LEFT JOIN 
      `users` u
       ON t.author_id = u.user_id
WHERE MATCH (t.`topic_title`) AGAINST (? IN BOOLEAN MODE)
ORDER BY t.creation_date DESC 
LIMIT 0 , 30