你可能会想,对于一个有很多日志条目的站点,比如说有10,000个,那么运行前面的代码将会非常危险。我们将对这个语句的结果进行限制,仅仅取回10个最新发布的日志:
$type = 'blog';
$status = 1; // In the node table, a status of 1 means published.
$sql = "SELECT * FROM {node} n WHERE type = '%s' AND status = %d ORDER BY
n.created DESC";
$result = db_query_range(db_rewrite_sql($sql), $type, $status, 0, 10);
while ($data = db_fetch_object($result)) {
$node = node_load($data->nid);
print node_view($node, TRUE);
}
我们没有将语句传递给db_query()并使用LIMIT条件语句,在这里我们使用了函数db_query_range()。为什么呢?因为并非所有的数据库都支持LIMIT语法,所以我们需要使用db_query_range()作为包装函数。
注意,我们将这些用来填充占位符的变量放在了范围的前面(也就是将type和status放在了0,10之前,如前面的例子所示)。
老葛的Drupal培训班 Think in Drupal