我有一个具有types_id,mid_types_id和sub_types_id的产品表。sub_types_id可以为null。
我的查询是这样的:
public function getProductsByType($types_id, $mid_types_id, $sub_types_id, $limit, $offset) {
$sql = "SELECT * FROM products AS p WHERE p.types_id = :types_id AND p.mid_types_id = :mid_types_id";
if (!empty($sub_types_id)) $sql .= " AND p.sub_types_id = :sub_types";
$sql .= " GROUP BY p.id LIMIT :limit OFFSET :offset";
$this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$query = $this->db->prepare($sql);
$query->bindParam('types_id', $types_id);
$query->bindParam('mid_types_id', $mid_types_id);
if (!empty($sub_types_id)) $query->bindParam('sub_types_id', $sub_types_id);
$query->bindParam('limit', $limit);
$query->bindParam('offset', $offset);
$query->execute();
if ($query->rowCount() > 0)
return $query->fetchAll(PDO::FETCH_ASSOC);
return null;
}
我表的数据如下:
types_id = 3,mid_types_id = 4,sub_types_id = 2
types_id = 1,mid_types_id = 1,sub_types_id = NULL
当我发送到types_id:3,mid_types_id:4,sub_types:2时,它可以工作。另外,如果我发送到type:3,mid_types_id:4也可以。因为它不控制为null的sub_types_id。
如果我创建没有sub_types_id空控件的查询。它有效,但是如果我将null发送给sub_types_id。它不起作用。
我怎么解决这个问题 ?
使用Mysql飞船运算符,<=>
AND p.sub_types_id <=> :sub_types
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句