有没有办法在PHP PDO中使参数成为可选的?
假设我有这个问题:有没有办法在PHP PDO中使参数成为可选的?,php,mysql,pdo,Php,Mysql,Pdo,假设我有这个问题: $qry = 'SELECT p.id FROM products p WHERE p.type = :type AND p.parent = :parent'; 如果我想让“type”成为可选的,那么我知道的唯一方法就是这样做: $qry = 'SELECT p.id FROM products p WHERE p.parent = :parent'; if(isset($type)) { $qry .= 'AND p.typ
$qry = 'SELECT p.id FROM products p
WHERE p.type = :type AND p.parent = :parent';
如果我想让“type”成为可选的,那么我知道的唯一方法就是这样做:
$qry = 'SELECT p.id FROM products p
WHERE p.parent = :parent';
if(isset($type))
{
$qry .= 'AND p.type = :type';
}
这是最好的方式吗?我想知道是否有一种方法可以让它保持原样,并使用某种参数来表示它是可选的。。。例如,如果$type=“*”则拉取所有类型
执行此操作的最佳方法是什么?您可能还需要检查空白值
if(isset($type) && $type != '') {
$qry .= 'AND p.type = :type';
}
您可能还需要检查空白值
if(isset($type) && $type != '') {
$qry .= 'AND p.type = :type';
}
理论上,这可能会起作用:
AND :type IN (NULL, p.type)
我不确定速度有多快。但它会将您的查询逻辑完全放入数据库。理论上,这可能会起作用:
AND :type IN (NULL, p.type)
我不确定速度有多快。但是它会将您的查询逻辑完全放入数据库。或者干脆
如果(!empty($type)){}
这取决于字段的有效值是否为空值?@choise I like!=''as empty()将0(int/string)和FALSE视为空,但它们可能是可接受的值。@nev stokes同意,但我也同意,如果您要查找的设置值不是空的。2 centor干脆如果(!empty($type)){}
这取决于是否有空值,如果字段的有效值不存在?@choise I like!=''as empty()将0(int/string)和FALSE视为空,但它们可能是可接受的值。@nev stokes同意,但我也同意,如果您要查找的设置值不是空的。2美分