2017-02-22 56 views
1

我已經使用PHP構建了一個動態搜索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' "; 
} 

然而,當我還下面的代碼添加到它,並指定兩個日期之間的日期範圍,它給我的價值觀這兩個日期之間,但隨後尋找其他領域將無法正常工作或它上面跳過碼。可能出了什麼問題?

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