Nie mogę wymyślić, jak dodać klauzulę IN do mojego zapytania, używając symboli zastępczych.
Chciałbym, żeby to było coś takiego:
$nids = array(1, 2, 3);
$result = db_query('SELECT * FROM {node} WHERE nid IN :nids', array(':nids' => $nids));
Nie mogę znaleźć żadnej dokumentacji dotyczącej tego prostego zadania. Jaki jest właściwy sposób na osiągnięcie tego?
node_types = array('node_type_1', 'node_type_2');
Dla Drupala 8
Zapytanie o podmiot:
Kwerenda SQL (wybierz), zasadniczo taka sama dla innych typów zapytań.
Dla Drupal 7
Zobacz odpowiedź Berdira.
Dla Drupal 6
Możesz to zrobić w następujący sposób:
db_placeholder jest potrzebny w Drupal 6, który utworzy ciąg znaków, który będzie zawierał symbole zastępcze potrzebne dla podanej tablicy wartości. Drupal 7 obsługuje to wszystko wewnętrznie, jak opisuje Berdir.
źródło
Korzystanie z interfejsu API bazy danych w Drupal 7
Oto, w jaki sposób można użyć db_select () zamiast db_query () dla tych samych wyników.
źródło
Drupal 6 Jeśli tablica zawiera ciągi, musisz poinformować db_placeholder ()
źródło
Aktualizacja Drupal 8.
Również ważne.
źródło
db_query
jest przestarzały i zostanie usunięty w Drupal 9. W tym momencie nie powinien być zalecany jako rozwiązanie. Nie powinieneś również używać bazy danych bezpośrednio do wyszukiwania danych związanych z jednostkami; istnieją do tego interfejsy API