MySQLからデータを取得するために検索エンジンを作成していました。検索結果を表示するときに「空の場合」が機能しない理由
フィールドを空のままにしても、それでもまだのデータベーステーブルのすべての内容が表示されます。
推測できますか?
ありがとう、お粗末なコードをお詫び申し上げます。
ここでは、コードです:https://codeshare.io/Gbr9W6
MySQLからデータを取得するために検索エンジンを作成していました。検索結果を表示するときに「空の場合」が機能しない理由
フィールドを空のままにしても、それでもまだのデータベーステーブルのすべての内容が表示されます。
推測できますか?
ありがとう、お粗末なコードをお詫び申し上げます。
ここでは、コードです:https://codeshare.io/Gbr9W6
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 !!!
$firstname
が空の場合は、SQLクエリは次のようになります。それはすべてのものと一致するように
SELECT *
FROM users
WHERE firstname LIKE '%%'
%
はワイルドカードです。必要がない場合は、クエリを実行する前に$firstname
が空であるかどうかを確認する必要があります。