取决于用户ID的地方

时间:2016-05-13 09:32:31

标签: php mysql sql where sql-like

我一直在使用查询来检查搜索字段中的用户输入并获取相关数据。此查询使用多个喜欢来检查各个字段(名称,参考,订单ID等)。

我注意到该查询忽略了检查用户ID 以仅显示该用户的记录的位置。而是从所有用户带回记录。这是当前的查询:

SELECT  ORDER_ID, ORDER_DATE, ORDER_TIME, ORDER_REF, ORDER_RECNAME 
FROM ORDERS 
WHERE USER_ID = '$userID' AND ORDER_ID LIKE '%$SearchData%' 
    OR ORDER_RECNAME LIKE '%$SearchData%' OR ORDER_REF LIKE '%$SearchData%' 
    OR ORDER_POSTCODE LIKE '%$SearchData%' 
GROUP BY ORDER_ID, ORDER_DATE, ORDER_TIME, ORDER_REF, ORDER_RECNAME

有什么地方我只是出错吗?它正确使用Likes但不使用WHERE USER_ID部分。

1 个答案:

答案 0 :(得分:0)

您将andor运算符混合在没有括号的where条件中,这会导致问题。封装由like连接的or运算符,以对所有运算符应用user_id限制。请注意,and运算符的优先级高于or

USER_ID = '$userID' AND (ORDER_ID LIKE '%$SearchData%' 
OR ORDER_RECNAME LIKE '%$SearchData%' OR ORDER_REF LIKE '%$SearchData%' 
OR ORDER_POSTCODE LIKE '%$SearchData%')