Não consigo descobrir como adicionar uma cláusula IN na minha consulta, usando espaços reservados.
Eu gostaria que fosse algo como:
$nids = array(1, 2, 3);
$result = db_query('SELECT * FROM {node} WHERE nid IN :nids', array(':nids' => $nids));
Não foi possível encontrar nenhuma documentação sobre esta tarefa simples. Qual é a maneira correta de conseguir isso?
node_types = array('node_type_1', 'node_type_2');
Para Drupal 8
Consulta de entidade:
Consulta SQL (selecione), essencialmente o mesmo para outros tipos de consulta.
Para Drupal 7
Veja a resposta de Berdir.
Para Drupal 6
Você pode fazer assim:
db_placeholders é necessário no Drupal 6, que criará uma string que contém os espaços reservados necessários para a matriz de valores fornecida. O Drupal 7 lida com tudo isso internamente, como Berdir descreve.
fonte
Usando a API do banco de dados no Drupal 7
Veja como você pode usar db_select () em vez de db_query () para os mesmos resultados.
fonte
Drupal 6 Se sua matriz contiver strings, você precisará informar db_placeholders ()
fonte
Atualização do Drupal 8.
Também válido.
fonte
db_query
foi descontinuado e será removido no Drupal 9. Não deve ser recomendado como solução neste momento. Você também não deve usar o banco de dados diretamente para consultar dados relacionados a entidades; existem APIs para isso