2016-11-16 9 views
0

私は以前にLIKEステートメントを使用していましたが、ステートメントを書き直して、何が間違っているのかよくわからなくなっていました。クエリを実行すると、より狭いリストを表示する必要があるときに、データベース内のすべてのレコードが表示されます。SQLのステートメントがすべての結果を表示しています

LIKEステートメントを使用する理由は、「プロパティ名」の一部を許可することによって、より高度な検索機能を効率的にするためです。

SQL文:

SELECT 
    * 
FROM 
    properties 
WHERE 
    PropertyName LIKE '%$PropertyName%' 
    OR PropertyLocation LIKE '%$PropertyLocation%' 
    OR PropertyType LIKE '%$PropertyType%' 
    OR PropertyBeds='$PropertyBeds' 
    OR PropertyRate >= '$PropertyRate1' 
    AND PropertyRate <= '$PropertyRate2' 

ご注意:の文は以下のようにワイルドカードを使用せずに作業を行います。

+1

質問とタグを使用しているデータベースで編集してください。また、変数の値を表示します。 –

答えて

1

あなたの条件は以下のとおりです。

WHERE PropertyName LIKE '%$PropertyName%' or 
     PropertyLocation LIKE '%$PropertyLocation%' or 
     PropertyType LIKE '%$PropertyType%' or 
     PropertyBeds = '$PropertyBeds' or 
     PropertyRate >= '$PropertyRate1' and PropertyRate <= '$PropertyRate2' 

PropertyNamePropertyLocation、またはPropertyTypeは空の文字列である場合は、すべての行を返します。それが何が起こっているのかについての私の最初の推測です。

おそらくORではなく、ANDをコネクタとして使用することをお勧めします。

+0

ありがとう、私はちょうどそれをテストし、それは起こっているものです。その結果、ユーザーは高度な検索から必要なものを検索できるようにしたいので、空文字列を許可するようにします。何をすべきかについて何か提案がありますか? @JoeCobain。 –

+0

。 。異なる変数が設定されているときに何が起こりたいのかについての詳細な説明とともに*別の*質問をするべきです。 –

関連する問題