3

データベースを検索するための簡単な検索スクリプトがあり、そのユーザーに属する検索クエリに一致するデータのすべての行を返す必要がありますが、私のクエリ(以下)はすべてのユーザーから行を返します。これを修正する方法はありますか?

SELECT * FROM tablename 
WHERE title LIKE '%" . $q . "%' 
OR text LIKE '%" . $q . "%' 
AND user='$user'

補足:これはPHPで実行されるため、$qはクエリを保持する変数です。

4

3 に答える 3

2

これを試しましたか?

"SELECT * FROM tablename WHERE (title LIKE '%".$q."%' OR text LIKE '%".$q."%') AND user='$user'"
于 2012-11-18T03:50:22.553 に答える
0

SQLクエリを試す前に、空白の$user変数をクリアしてください

于 2012-11-18T03:50:30.663 に答える
0

これを試して:

<?php 
...
echo "SELECT * FROM tablename 
WHERE title LIKE '%" . $q . "%' 
OR text LIKE '%" . $q . "%' 
AND user='$user'";

そして、出力がどのように見えるかを確認してください。

余談ですが、おそらくあなたは逃げることができます

WHERE title LIKE '%$q%'

(つまり、クエリ文字列を連結する必要はありません)。これにより、コードが少しすっきりし、エラーが減ります(ピリオド/引用符の欠落から)。

于 2012-11-18T03:55:58.623 に答える