2012-10-18 126 views
0

讓我首先解釋這個問題,然後解釋我的解決方案。 (肯定會來很多人,但我不知道如何用乾淨的代碼來解決它)使用過濾器設計自定義查詢生成器

問:有一個mysql數據庫,想根據多個和/或哪裏的條件進行查詢。 例如其中列1 = 3,列2不喜歡「AB%」

的簡單解決方案(如我使用的PHP Zend查詢構建器)

if(column1) 
$query->where(conditions); 
if(column2) 
$query->where(conditions); 
. 
. 
. 
if(columnn) 
$query->join(some params) 
     ->where(conditions); 

或第二方式

創建多個功能和傳遞數據通過他們。

哪一個更好的實現?有沒有關於相同的文章?

回答

0

where條款應該是這樣的:

where 
    (:p1 is null or col1 = :p1) 
    or (
     (:p2 is null or col2 = :p2) 
     and 
     (:p3 is null or col3 like '%:p3') 
    ) 

:p是參數。如果沒有給出該參數,則將其傳遞爲null

+0

這是非常真實的,我很好的執行,想要問真的如果它的一個正確的方式或可以有其他設計選項相同。 – amitchhajer