2012-10-22 28 views
1

我正在創建一個查詢,該查詢取決於幾個輸入表單值,並且在某些時候我正在處理三個值。詢問的第一個值必須始終爲0,所以我有這樣的:取決於2複選框的條件查詢

.. AND value_1 = 0 

我希望能夠乾淨利落做的是以下幾點:

如果checkbox_2檢查:

... AND (value_1 = 0 OR value_2 = 0) 

如果checkbox_3檢查

... AND (value_1 = 0 OR value_3 = 0) 

如果checkbox_2和checkbox_3檢查

... AND (value_1 = 0 OR value_2 = 0 OR value_3 = 0) 

我正在創建一個字符串中的SQL查詢,我想知道什麼是乾淨的方式來做到這一點。

回答

1

最乾淨的方法是創建填充以implode在SQL查詢中使用的選項,並串起來的數組。

<?php 

$options = array(); 
$options[] = 'value_1'; 
$options[] = 'value_2'; 

// add our condition to each column 
array_walk($options, function(&$v) { 
    $v = sprintf('%s = 0', $v); 
}); 

// implode into SQL 
$sql = sprintf('... AND (%s)', implode(' OR ', $options)); 

只要確保您將複選框連接到$options陣列。

0

您是否希望checkbox_1始終選中checkbox_2或checkbox_3?這應該是這樣的

... AND value_1 = 0 AND (value_2 = 0 OR value_3 = 0) 
+0

不,我不是要求那樣。 –

+0

好吧,我的不好。也許你可以重新解釋你的問題,對我而言,很難理解你想要做什麼。 – mboldt