Je n'arrive pas à comprendre comment ajouter une clause IN à ma requête en utilisant des espaces réservés.
Je voudrais que ce soit quelque chose comme:
$nids = array(1, 2, 3);
$result = db_query('SELECT * FROM {node} WHERE nid IN :nids', array(':nids' => $nids));
Impossible de trouver de la documentation sur cette tâche simple. Quelle est la bonne façon d'y parvenir?
node_types = array('node_type_1', 'node_type_2');
Pour Drupal 8
Requête d'entité:
Requête SQL (select), essentiellement la même chose pour les autres types de requêtes.
Pour Drupal 7
Voir la réponse de Berdir.
Pour Drupal 6
Vous pouvez le faire comme ça:
db_placeholders est nécessaire dans Drupal 6, ce qui créera une chaîne contenant les espaces réservés nécessaires pour le tableau de valeurs donné. Drupal 7 gère tout cela en interne comme décrit par Berdir.
la source
Utilisation de l'API de base de données dans Drupal 7
Voici comment utiliser db_select () à la place de db_query () pour les mêmes résultats.
la source
Drupal 6 Si votre tableau contient des chaînes, vous devez indiquer à db_placeholders ()
la source
Drupal 8 mise à jour.
Aussi valide.
la source
db_query
est obsolète et sera supprimé dans Drupal 9. Il ne devrait pas être recommandé comme solution à ce stade. Vous ne devez pas non plus utiliser directement la base de données pour interroger des données liées à des entités; il y a des APIs pour ça