说我有这个问题:
$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 =“*”则拉出所有类型。
最好的办法是什么?
答案 0 :(得分:1)
您可能还想检查空白值
if(isset($type) && $type != '') {
$qry .= 'AND p.type = :type';
}
答案 1 :(得分:0)
理论上这可能有效:
AND :type IN (NULL, p.type)
不确定速度。但它将您的查询逻辑完全放入数据库中。