Where Like 取决于用户 ID

Where Like Dependent on User ID

我一直在使用一个查询来检查用户从搜索字段输入的内容并取回相关数据。此查询使用多个点赞来检查各个字段(名称、参考、订单 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 部分。

您在不带括号的 where 条件中混合了 andor 运算符,这导致了问题。封装由 or 连接的 like 运算符,以将 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%')