Ich kann nicht herausfinden, wie ich eine IN-Klausel mit Platzhaltern in meine Abfrage einfügen kann.
Ich möchte, dass es so aussieht wie:
$nids = array(1, 2, 3);
$result = db_query('SELECT * FROM {node} WHERE nid IN :nids', array(':nids' => $nids));
Ich kann keine Dokumentation zu dieser einfachen Aufgabe finden. Was ist der richtige Weg, um dies zu erreichen?
node_types = array('node_type_1', 'node_type_2');
Für Drupal 8
Entitätsabfrage:
SQL-Abfrage (Auswahl), im Wesentlichen gleich für andere Abfragetypen.
Für Drupal 7
Siehe Berdir's Antwort.
Für Drupal 6
Du kannst es so machen:
In Drupal 6 wird db_placeholders benötigt, wodurch ein String erstellt wird, der die Platzhalter enthält, die für das angegebene Array von Werten benötigt werden. Drupal 7 erledigt dies alles intern wie Berdir beschreibt.
quelle
Verwenden der Datenbank-API in Drupal 7
So können Sie db_select () anstelle von db_query () für dieselben Ergebnisse verwenden.
quelle
Drupal 6 Wenn Ihr Array Strings enthält, müssen Sie db_placeholders () mitteilen
quelle
Drupal 8 Update.
Auch gültig.
quelle
db_query
ist veraltet und wird in Drupal 9 entfernt. Es sollte an dieser Stelle nicht als Lösung empfohlen werden. Sie sollten die Datenbank auch nicht direkt zum Abfragen von Daten verwenden, die sich auf Entitäten beziehen. Dafür gibt es APIs