Lapisan basis data Drupal mencakup fitur tambahan placeholder. Jika nilai yang dilewatkan untuk placeholder adalah array, itu akan secara otomatis diperluas ke daftar yang dipisahkan koma seperti halnya placeholder yang sesuai. Itu berarti pengembang tidak perlu khawatir tentang menghitung berapa banyak placeholder yang mereka butuhkan.
Contoh harus membuat perilaku ini lebih jelas:
<?php
// This code:
db_query("SELECT * FROM {node} WHERE nid IN (:nids)", array(':nids'=> array(13,42,144));// Will get turned into this prepared statement equivalent automatically:
db_query("SELECT * FROM {node} WHERE nid IN (:nids_1, :nids_2, :nids_3)", array(':nids_1'=>13,':nids_2'=>42,':nids_3'=>144,));// Which is equivalent to the following literal query:
db_query("SELECT * FROM {node} WHERE nid IN (13, 42, 144)");?>
$nids = array(1,2,3);
$placeholders = db_placeholders($nids);
$result = db_query("SELECT * FROM {node} WHERE nid IN ($placeholders)", $nids);
db_placeholder diperlukan di Drupal 6 yang akan membuat string yang menampung placeholder yang diperlukan untuk array nilai yang diberikan. Drupal 7 menangani semua ini secara internal seperti yang dijelaskan Berdir.
db_querysudah ditinggalkan dan akan dihapus dalam Drupal 9. Seharusnya tidak direkomendasikan sebagai solusi pada saat ini. Anda juga tidak boleh menggunakan database secara langsung untuk menanyakan data yang terkait dengan entitas; ada API untuk itu
Clive
Rekomendasi ini adalah pembaruan ketat Drupal 8. Jawaban yang diterima saat ini tidak lagi berfungsi untuk Drupal 8, karena tidak memiliki braket persegi. Menolak jawaban ini karena tidak berfungsi untuk Drupal 9 versi utama lainnya tidak jujur. Itu menghentikan pengguna mendapatkan jawaban yang hanya berfungsi. Sentimen adalah contoh yang jelas, Sempurna adalah musuh yang cukup baik.
node_types = array('node_type_1', 'node_type_2');
Untuk Drupal 8
Kueri entitas:
Sql Query (pilih), pada dasarnya sama untuk jenis permintaan lainnya.
Untuk Drupal 7
Lihat jawaban Berdir.
Untuk Drupal 6
Anda dapat melakukannya seperti ini:
db_placeholder diperlukan di Drupal 6 yang akan membuat string yang menampung placeholder yang diperlukan untuk array nilai yang diberikan. Drupal 7 menangani semua ini secara internal seperti yang dijelaskan Berdir.
sumber
Menggunakan API Database di Drupal 7
Inilah cara Anda dapat menggunakan db_select () alih-alih db_query () untuk hasil yang sama.
sumber
Drupal 6 Jika array Anda berisi string, Anda perlu memberi tahu db_placeholder ()
sumber
Pembaruan Drupal 8.
Juga valid.
sumber
db_query
sudah ditinggalkan dan akan dihapus dalam Drupal 9. Seharusnya tidak direkomendasikan sebagai solusi pada saat ini. Anda juga tidak boleh menggunakan database secara langsung untuk menanyakan data yang terkait dengan entitas; ada API untuk itu