首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于求职搜索功能的SQL问题

用于求职搜索功能的SQL问题
EN

Stack Overflow用户
提问于 2011-03-15 23:07:07
回答 5查看 146关注 0票数 0

有一个文本输入的字符串和选择输入的位置,当他们搜索时,它用这个查询查询数据库。我正在使用PHP构造字符串

代码语言:javascript
复制
$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%'"

当我得到结果时,它会显示与位置输入字符串不匹配的其他位置的工作吗?为什么?它将显示所有包含该字符串的作业,我不希望出现这种情况。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-15 23:10:54

使用括号进行正确的表达式解释:

代码语言:javascript
复制
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_*字段搜索。

票数 4
EN

Stack Overflow用户

发布于 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)

票数 2
EN

Stack Overflow用户

发布于 2011-03-15 23:12:24

您需要将“OR”括起来

代码语言:javascript
复制
  $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注入“的内容

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5313709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档