Ich fand heraus, vor kurzem, dass Sie NULL-Werte in PDO binden können:Binden "nicht null" in PDO?
$stmt = $db->prepare('SELECT * FROM foo WHERE bar = :bar');
$stmt->execute(array(':bar'=>null));
$foo = $stmt->fetchAll(PDO::FETCH_OBJ);
Dieses erfolgreich alle foo
aus der Datenbank holen würde, wo die bar
Spalte null ist.
Allerdings würde ich jetzt gerne das Gegenteil tun. Ich würde gerne alle Spalten holen, wo die bar
Spalte nicht null ist.
Ich bin mir bewusst, ich könnte einfach bar = :bar
durch bar IS NOT NULL
ersetzen. Ich möchte das jedoch vermeiden und mache stattdessen vorbereitete Anweisungen, weil ich manchmal den Query-String dynamisch erstellen muss und dies manuell tun müsste, wäre eine Menge zusätzlicher Arbeit.
Ist das möglich?
Sie könnten Abfrage Builder-Bibliothek wie [Pixie] (https://github.com/usmanhalalit/pixie) und dann können Sie dynamische Abfragen einfach erstellen oder erstellen Sie Ihre eigenen Abfrage-Generator – Gal
Sie bauen zwei Anweisungen dann, eine wo Sie Werte übergeben und die andere, wo Sie 'IS NOT NULL' verwenden. PDO wird ** die Parameter angeben **. – Mjh
@Mjh PDO/MySQL * behandelt die Parameter als Werte *. Es kann sein, oder möglicherweise nicht zitiert werden beteiligt; Im Idealfall ist kein Zitat erforderlich, wenn Sie native Prepared-Anweisungen verwenden. Es ist einfach ein Unterschied in der Behandlung von Parametern als Teil der Syntax oder als Werte. – deceze