2017-08-27 5 views
0

ユーザー名の電子メールを置くことができる検索を行いたいと思います。 しかし、何らかの理由でそれがない作品...私は、これは間違っていると思うSql: "場所"と "And"

$w_search = "WHERE u.user_name LIKE '%$q%' AND u.user_email LIKE '%$q%'"; 

編集: 完全なクエリは次のとおりです。

SELECT u.user_id, u.user_name, u.user_rank, u.user_email, p.p_name, p.p_profimg FROM u_registered AS u LEFT JOIN u_profile AS p ON u.user_id = p.user_id '.$w_search.' ORDER BY u.user_id 

はあなたが助けてもらえ私? ありがとうございます。

+0

ここでは選択しないでください。 – Syfer

+2

残りのクエリ/コードはどこにありますか?あなたのデータ構造はどのように見えますか? –

+0

申し訳ありません、今投稿を編集しました。完全なクエリを入れました。 – DoomGuyMM2

答えて

1

あなたの問題は、あなたが持っている見、おそらくそれは「動作しない」になっているものをあなたのwhere句に2つの条件を持っていることです:あなたが必要を探しているユーザーが持っていることを意味

WHERE u.user_name LIKE '%$q%' AND u.user_email LIKE '%$q%' 

その部分の$q(部分的にはlikeのものです)の名前(user_nameのメールの一部が同時に表示されます。だから、彼の名前がBartで、彼の電子メールが[email protected]という人物を持っていれば、1つのフィルタが真を返し、もう1つが偽を返すので、クエリはそれを返すことはありません。

正しい方法は$qがそうOR演算子であるか、両方のものに応じて、その後の1を持っていることです。

WHERE u.user_name LIKE '%$q%' OR u.user_email LIKE '%$q%' 

しかし、これはテストのいくつかの種類がある場合、名前や電子メールが正確であればデータベースに与えられたとして、次のものが必要です。

WHERE u.user_name = '$q' 

OR

WHERE u.user_email = '$q' 
+0

はい、私はあなたに同意します。私はデータベースやこれらすべてのものでかなり新しいです。 O Brigado! – DoomGuyMM2

+0

私は助けることができる喜んでhehehehe。そしてそれはalmos right "Obrigado!"一緒に!ニースしよう:) –

+0

ハハ!どういたしまして! – DoomGuyMM2