有没有办法在PHP PDO中使param可选?

时间:2010-10-07 13:36:18

标签: php mysql 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 =“*”则拉出所有类型。

最好的办法是什么?

2 个答案:

答案 0 :(得分:1)

您可能还想检查空白值

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

答案 1 :(得分:0)

理论上这可能有效:

 AND :type IN (NULL, p.type)

不确定速度。但它将您的查询逻辑完全放入数据库中。