2016-12-06 3 views
3

SQL構文ではエラーは発生しませんが、間違ったデータが表示されます

私の次のSQLが正しいのか、どこで間違ったのでしょうか?

これは私のSQLは、それが全くエラーを得なかっ

$sql = "SELECT * FROM tblAlumni WHERE fname LIKE '%$search_file%' or mname LIKE '%$search_file%' or lname LIKE '%$search_file%' AND alum_status LIKE 2"

私のPHPファイルであるが、それは正しいデータが表示されません。私はそれを検索したり、それを照会した場合

これは

Click here

と結果私のテーブルである。この

Click here は、将来の回答ありがとうございます。 ANDORよりも優先順位が高いので

+1

それは表示されますか?何を表示する必要がありますか? '$ search_file'があなたのSQLインジェクションに自分自身をオープンさせる前に処理されていない場合(処理方法に依存して、まだ開いている可能性があります)パラメータ化されたクエリを使用することをお勧めします。 – chris85

+0

リンク先にあります。 1drvで申し訳ありません。 –

+0

私はリンクをクリックしてロードするのに時間がかかりました。私はDSLに載っていますので、ちょうど私です。 – chris85

答えて

4

あなたのクエリは、この

SELECT * 
FROM tblAlumni 
WHERE fname LIKE '%$search_file%' 
     OR mname LIKE '%$search_file%' 
     OR (lname LIKE '%$search_file%' 
      AND alum_status LIKE 2) 

のように実行されます。括弧が、それは私に多くの意味を成して

SELECT * 
FROM tblAlumni 
WHERE (fname LIKE '%$search_file%' 
      OR mname LIKE '%$search_file%' 
      OR lname LIKE '%$search_file%') 
     AND alum_status = 2 

利用=代わりのLIKEは、あなたが完全に一致を探しているWhere節の実行のために非常に重要である

更新:何

SELECT * 
FROM tblAlumni 
WHERE (fname LIKE '%$search_file%' 
      OR mname LIKE '%$search_file%' 
      OR lname LIKE '%$search_file%') 
     AND alum_status LIKE 2 
     AND yeargrad LIKE '$year' 
+0

ありがとう、それは速かった。あなたは大きな助けになります! –

+0

私はデータベースから1つのデータを入れるのを忘れてしまった。 '$ sql = "SELECT * FROM tblAlumni WHERE(fname LIKE'%$ search_file% 'またはmname LIKE'%$ search_file% 'またはlname LIKE'%$ search_file% '、yeargrad LIKE' 2017 ')およびalum_status LIKE 2" .. これは正しいです? –

+0

@IKenat - 間違ってはいけません。そのようなカンマを使用することはできません。カンマの代わりにANDを意味しますか? –

関連する問題