有一个文本输入的字符串和选择输入的位置,当他们搜索时,它用这个查询查询数据库。我正在使用PHP构造字符串
$sql = "SELECT *
FROM job_request
WHERE job_province = '$location'
AND job_title LIKE '%$string%'
OR job_description LIKE '%$string%'
OR job_skills LIKE '%$string%'
OR job_experience LIKE '%$string%'"当我得到结果时,它会显示与位置输入字符串不匹配的其他位置的工作吗?为什么?它将显示所有包含该字符串的作业,我不希望出现这种情况。
发布于 2011-03-15 23:10:54
使用括号进行正确的表达式解释:
SELECT *
FROM job_request
WHERE job_province = '$location'
AND ( job_title LIKE '%$string%'
OR job_description LIKE '%$string%'
OR job_skills LIKE '%$string%'
OR job_experience LIKE '%$string%')坦率地说,您应该考虑使用Full Text Search functionality进行job_*字段搜索。
发布于 2011-03-15 23:12:47
当你使用A AND B OR C OR D OR E时,它会被解释为(A AND B) OR C OR D OR E。看起来你真的想要A AND (B OR C OR D OR E)。
发布于 2011-03-15 23:12:24
您需要将“OR”括起来
$sql = "SELECT *
FROM job_request
WHERE job_province = '$location'
AND (job_title LIKE '%$string%'
OR job_description LIKE '%$string%'
OR job_skills LIKE '%$string%'
OR job_experience LIKE '%$string%')"并阅读有关"SQL注入“的内容
https://stackoverflow.com/questions/5313709
复制相似问题