2014-04-26 136 views
0

有誰知道如何讓mysql查詢忽略某個條件,如果PHP值爲空。我試圖創建一個具有許多嚴格條件的高級搜索引擎來過濾搜索,但希望SQL在PHP值爲空時忽略某些原因。 例如:SQL,忽略PHP值爲空的原因

$condition_1 = ' '; 
$condition_2 = 'Random'; 
mysql_query("SELECT something FROM table WHERE row_1='$condition_1' &&  row_2='$condition_2'") 

將有15個,其中在查詢中引起,所以任何涉及使多個查詢進行搜索的不同組合是不可行的。

$ condition_1是空的,並且只顯示那些在row_1中沒有值的結果,但我只是希望查詢在PHP值$ condition_1爲空時忽略row_1條件。我將如何做到這一點?

+0

我覺得您的查詢是錯誤的。使用AND而不是&& – dkakoti

+0

@dkakoti - '&&'相當於'AND'和一個[MySQL允許的操作符](https://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html )。 –

回答

3

您可以動態構建你的WHERE條件,請注意,這也適用,如果兩個條件都爲空

$sql = "SELECT something FROM table where 1 "; 

if(trim($condition_1) != '') 
    $sql .= " AND row_1='$condition_1'"; 

if(trim($condition_2) != '') 
    $sql .= " AND row_2='$condition_2'"; 

mysql_query($sql); 
+0

在滿足第一個條件時,sql將會是「SELECT something FROM table where 1 AND row_1 ='$ condition_1'」,這可以正常工作。請注意,表達式'WHERE 1'只是一個總是計算爲真的虛擬表達式 –