0

私よりも優れた頭脳を持つ人々への簡単な質問を願っています - テーブルから行を選択するときに、MySQL 構文に問題があります。

$query="SELECT auth, first_name, last_name FROM main_user
    WHERE (auth='1' OR auth='2'
      AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%')
    LIMIT 10";

基本的に、「auth」が1または2に設定されているユーザー入力に基づいてクライアント名を取得したいと考えています。

現在の結果では、「auth」値のみが一致する結果が返されているようです。

4

5 に答える 5

2
auth='1' OR auth='2' AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%'

これは、

(auth='1') 
OR (
       auth='2' 
   AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%'
   )

代わりに次のように書く必要があります

(
    auth='1' 
OR  auth='2'
)  
AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%'
于 2012-12-02T11:24:40.770 に答える
2

ORこれらを次のように括弧に入れてみてください:

SELECT 
  auth, 
  first_name, 
  last_name 
FROM main_user
WHERE (auth = '1' OR auth = '2')
  AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%')
LIMIT 10;
于 2012-12-02T11:24:48.220 に答える
1

あなたは()間違っています。試す

SELECT auth, first_name, last_name
FROM main_user
WHERE (auth = '1' OR auth = '2')
AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%'
LIMIT 10

またはより簡単

SELECT auth, first_name, last_name
FROM main_user
WHERE auth in ('1','2')
AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%'
LIMIT 10
于 2012-12-02T11:24:43.313 に答える
1

下記のSQL選択クエリを実行してみてください。

以下のSQLクエリでOR演算子をINに置き換えました

 $query="SELECT auth, first_name, last_name FROM main_user
WHERE auth in ('1','2')
  AND CONCAT(first_name,' ',last_name) LIKE '%".$client_name."%')
LIMIT 10";
于 2012-12-02T12:05:55.007 に答える
0

2 つの OR 句を括弧で囲む必要があります。

WHERE ( ( auth='1' OR auth='2' )
     AND ...
于 2012-12-02T11:24:24.217 に答える