我一直在使用查询来检查搜索字段中的用户输入并获取相关数据。此查询使用多个喜欢来检查各个字段(名称,参考,订单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
部分。
答案 0 :(得分:0)
您将and
和or
运算符混合在没有括号的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%')