SQL语法不会出错,但会显示错误的数据

时间:2016-12-06 04:03:09

标签: php sql

我刚来这里。

我想问一下我的后续SQL是否正确以及我在哪里做错了?

这是我的php文件中的SQL

$sql = "SELECT * FROM tblAlumni WHERE fname LIKE '%$search_file%' or mname LIKE '%$search_file%' or lname LIKE '%$search_file%' AND alum_status LIKE 2"

它没有任何错误,但它没有显示正确的数据。

这是我的表

Click here

结果如果我搜索或查询它是

Click here 感谢您将来的答案。

1 个答案:

答案 0 :(得分:4)

您的查询将按此执行

SELECT *
FROM   tblAlumni
WHERE  fname LIKE '%$search_file%'
        OR mname LIKE '%$search_file%'
        OR ( lname LIKE '%$search_file%'
             AND alum_status LIKE 2 ) 

因为AND的优先级高于OR。括号对于执行Where子句

非常重要
SELECT *
FROM   tblAlumni
WHERE  ( fname LIKE '%$search_file%'
          OR mname LIKE '%$search_file%'
          OR lname LIKE '%$search_file%' )
       AND alum_status = 2 

当您正在寻找完全匹配时,请使用=代替LIKE

更新:

SELECT *
FROM   tblAlumni
WHERE  ( fname LIKE '%$search_file%'
          OR mname LIKE '%$search_file%'
          OR lname LIKE '%$search_file%' )
       AND alum_status LIKE 2
       AND yeargrad LIKE '$year'