2017-02-22 9 views
1

PHP & MySQLを使用して動的検索を構築しました。すべてが正常に動作しており、コードは複数の値を同時に検索できます。PHP&MYSQL複数のフィールドを持つ動的検索に日付範囲がありません

$query=""; 
$query .=" select * from customers where 1 "; 

if(strlen($adv_s_city)>0){ 
    $query .=" and city = '$adv_s_city' "; 
}    
if(strlen($adv_s_personalIdType)>0) 
{    
    $query .=" and pesonal_identity_type = '$adv_s_personalIdType' "; 
} 
if(strlen(isset($_POST['adv_s_gender'])) > 0) 
{     
    $query .=" and gender = '$adv_s_gender' "; 
} 

私もそれにコードの下に追加して、2つの日付の間の日付範囲を指定する場合しかし、それは私にこれらの2つの日付の間の値を与えているが、その後、他のフィールドを検索すると動作しませんか、それは上記のスキップコード。何が間違っていた可能性がありますか?

if(strlen($adv_s_FromDate)>0 && strlen($adv_s_ToDate)>0) 
{ 
    $query .=" and (date between '$adv_s_FromDate' and '$adv_s_ToDate') "; 
} 
+1

最後に 'echo $ query'を入れてクエリをチェックすると、デバッグに役立ちます。 –

+0

それは狂ったように聞こえるかもしれませんが、その単純なエコー$クエリは、私がやっていることと要求していることについて十分な洞察を与えてくれました。ありがとうございました:) –

+0

そして、SQLインジェクションとパラメトリッククエリについてはこちら – Strawberry

答えて

0

コードで生成されているクエリの種類が問題なく機能しています。私はmysqlバージョン5.7.13を使用しています。クエリを生成しているコードにエラーがある可能性があります。完全なクエリを表示し、それをmysqlで実行して、明確なビューを取得してください。たぶんいくつかの変数が空になるように出てくるので、それらの条件はクエリに追加されません。

は、私は以下の通り私のデータベースに類似したクエリを使用:

SELECT * FROM database.subsection where 1 and subsection_type='textbox' and subsection_position=2 and (creation_time between '2016-09-29 18:46:41' and '2016-09-30 10:56:40'); 

このクエリは私に私のデータベースに正しい結果を与えています。コードをチェックして、そこに何か不足している可能性があります。

+0

あなたのリプレイをありがとう。はい、あなたは正しいです。このエラーは、日付検索の条件の前に使用していたコードから発生していました。 –

+0

@BayarShahabあなたはこの問題を解決する必要があります。 :) – Ayush

関連する問題