2010-10-07 119 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) 

不知道的快速性。但它将您的查询逻辑完全放入数据库中。

相关问题