Ich habe eine Produkttabelle, die types_id, mid_types_id und sub_types_id hat. sub_types_id kann null sein.PDO MySQL wo Bedingung wenn null oder gleich
Meine Abfrage wie folgt:
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;
}
Daten Mein Tisch ist wie:
types_id = 3, mid_types_id = 4, sub_types_id = 2
types_id = 1, mid_types_id = 1, sub_types_id = NULL
Wenn ich an types_id: 3, mid_types_id: 4, sub_types: 2 es funktioniert. Auch wenn ich an Typen sende: 3, mid_types_id: 4 funktioniert es auch. Weil es die sub_types_id, die null ist, nicht kontrolliert.
wenn ich meine Abfrage ohne sub_types_id leeren Steuerelement erstellen. Es funktioniert aber wenn ich zu sub_types_id als null sende. Es funktioniert nicht.
Wie kann ich dieses Problem lösen?
große Lösung, vielen Dank! – Nevermore