2010-10-07 96 views
1

說我有這個疑問:有沒有辦法在PHP PDO中設置一個參數?

$qry = 'SELECT p.id FROM products p 
     WHERE p.type = :type AND p.parent = :parent'; 

如果我要拍「型」可選的話,我知道該怎麼做這將是這樣做的唯一方法:

$qry = 'SELECT p.id FROM products p 
     WHERE p.parent = :parent'; 

if(isset($type)) 
{ 
    $qry .= 'AND p.type = :type'; 
} 

是這是最好的方式?我想知道是否有一種方法可以保持原樣,並使用某種參數來指示它是可選的...例如,如果$ type =「*」,則拉出所有類型。

最好的辦法是做什麼?

回答

1

您可能要檢查空值以及

if(isset($type) && $type != '') { 
    $qry .= 'AND p.type = :type'; 
} 
+1

或簡單的'if(!empty($ type)){}' – choise 2010-10-07 13:48:56

+1

這取決於如果一個空值,如果該字段的有效值不是這樣嗎? – 2010-10-07 13:59:46

+1

@choise我喜歡!=''爲empty()將0(int/string)和FALSE視爲空,但它們可以是可接受的值。 – 2010-10-07 14:09:42

0

理論上這可能工作:

AND :type IN (NULL, p.type) 

不知道的快速性。但它將您的查詢邏輯完全放入數據庫中。

相關問題