SQL in keyword, db_placeholders()

處理基層的 sql 時候遇到問題
但 Drupal 的 database abstraction layer 的文檔實在是太簡單 http://api.drupal.org/api/drupal/includes!database.inc/group/database/6

特別是複雜的 case,例如 IN:
例如找出已發佈的,類型為 Page 或 Story 的 node:

<?php
$sql
= "SELECT * FROM {node} WHERE status = '%d' AND type IN (".db_placeholders($types, 'varchar').") ";

$r = db_query($sql, array_merge((array)$status, $types));
?>

db_placeholders 預設是傳為 int
要傳入 varchar 則要提供等二個參數
而最後使用 db_query 的時候要使用 array_merge
因為 $types 本身是一個 array
而 db_query 則不可以傳入 array of array
所以使用 array_merge 傳入一個一維的陣列

Google