database API:https://drupal.org/node/310069
文章来源:http://www.cuitu.net/book/di-wu-zhang-shu-ju-ku-cao-zuo
测试文件:
<?php
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
//单值
$nbr_records = db_query("SELECT count(`nid`) FROM `node`")->fetchField();
print_r($nbr_records);
echo "<br>";
//多值
$type = 'page';
$status = 1;
$result = db_query("SELECT nid, title FROM {node} WHERE type = :type AND status = :status", array(
':type' => $type, ':status' => 1,
));
foreach ($result as $row) {
echo $row->title."<br/>";
}
//获取指定范围的记录
$query = db_select('node', 'n');
$query
->condition('type', 'page')
->fields('n', array('title'))
->range(0,100);
$result = $query->execute();
foreach($result as $row) {
echo $row->title."<br/>";
}
//其他
第一个例子是结果集进行排序。使用OrderBy方法,您可以对结果集进行排序。例如结果按 title 字段升序排序。
$query
->condition('type', 'page')
->fields('n', array('title'))
->orderBy('title', 'ASC');
下一个例子是先按节点修改日期(changed)降序排序,然后按标题(title)升序排序。
$query
->condition('type', 'page')
->fields('n', array('title', 'changed'))
->orderBy('changed', 'DESC')
->orderBy('title', 'ASC');
有的查询可能有重复的记录。在这种情况下,可以使用 distinct 方法将重复的记录过滤掉。
$query
->condition('type', 'page')
->fields('n', array('title', 'changed'))
->orderBy('changed', 'DESC')
->orderBy('title', 'ASC')
->distinct()