2017-09-09 5 views
0

MySQLからデータを取得するために検索エンジンを作成していました。検索結果を表示するときに「空の場合」が機能しない理由

フィールドを空のままにしても、それでもまだのデータベーステーブルのすべての内容が表示されます。

推測できますか?

ありがとう、お粗末なコードをお詫び申し上げます。

ここでは、コードです:https://codeshare.io/Gbr9W6

答えて

1

WHERE句の代わりにLIKE句を使用すると、正確なものを見つけるのではなく、類似したものを探したい場合に使用します。例:

あなたは光線が含まれているファーストネームを検索したい場合はファーストネームレイ

SELECT first_name from users WHERE firstname = "Ray"; 

を検索したい場合は、

SELECT first_name from users WHERE firstname LIKE "%ray%"; 


あなたの最初の名前が空であるため、クエリは

SELECT * FROM users WHERE firstname LIKE '%%' 

になり、すべてが一致し、すべての値が返されます。

コードの修正:
あなたが最初の名前は

if(!empty($firstname)) 
{ 
    $firstname = "%".$firstname."%"; 
} 

空の場合、すべての値を取得し、これを変更したくないのであれば、あなたは、あなたのコードに次のことを行うことができますコードに

$statement->execute(array(
    ':firstname' => $firstname 
)); 

これは結果をフェッチしません。送信

'%' なしで使用する場合の句はWHERE句に等しいいるよう

として空です。

Good Luck !!!

1

$firstnameが空の場合は、SQLクエリは次のようになります。それはすべてのものと一致するように

SELECT * 
FROM users 
WHERE firstname LIKE '%%' 

%はワイルドカードです。必要がない場合は、クエリを実行する前に$firstnameが空であるかどうかを確認する必要があります。

関連する問題