2016-05-13 19 views
0

私は、検索フィールドからユーザーの入力を確認し、関連するデータを取得するクエリを使用しています。このクエリは、複数の好きなものを使ってさまざまなフィールド(名前、参照、注文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の部分は正しく使用されていません。

+2

これを試してみてください: ORDER_IDを選択、ORDER_DATE、order_timeの、ORDER_REF、ORDERS USER_ID = '$ユーザーID' AND(ORDER_ID LIKE '%$ SearchData%' OR ORDER_RECNAMEなどからORDER_RECNAME '%$ SearchData%' OR ORDER_REF '%$ SearchData%' OR ORDER_POSTCODE LIKE '%$ SearchData%') GROUP BY ORDER_ID、ORDER_DATE、ORDER_TIME、ORDER_REF、ORDER_RECNAME –

+0

@FlorinSecalありがとうございます!完璧な今働いています:) – Jake

答えて

0

括弧なしの条件でandor演算子を混在させているため、問題が発生します。 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%') 
+0

アドバイスをありがとう、完璧に今働いています。 – Jake

関連する問題