No puedo entender cómo agregar una cláusula IN en mi consulta, usando marcadores de posición.
Me gustaría que fuera algo como:
$nids = array(1, 2, 3);
$result = db_query('SELECT * FROM {node} WHERE nid IN :nids', array(':nids' => $nids));
No puedo encontrar ninguna documentación sobre esta simple tarea. ¿Cuál es la forma correcta de lograr esto?
node_types = array('node_type_1', 'node_type_2');
Para Drupal 8
Consulta de entidad:
Consulta SQL (select), esencialmente lo mismo para otros tipos de consulta.
Para Drupal 7
Ver la respuesta de Berdir.
Para Drupal 6
Puedes hacerlo así:
Se necesita db_placeholders en Drupal 6, que creará una cadena que contenga los marcadores de posición necesarios para la matriz de valores dados. Drupal 7 maneja todo esto internamente como lo describe Berdir.
fuente
Uso de la API de base de datos en Drupal 7
Así es como puede usar db_select () en lugar de db_query () para obtener los mismos resultados.
fuente
Drupal 6 Si su matriz contiene cadenas, debe decirle a db_placeholders ()
fuente
Actualización de Drupal 8.
También valido.
fuente
db_query
está en desuso y se eliminará en Drupal 9. No debería recomendarse como solución en este momento. Tampoco debe usar la base de datos directamente para consultar datos relacionados con entidades; hay API para eso