Drupal的数据库抽象层做得真心不错,Drupal防注入一定挺强。
databasedemo.php
<?php // 配置路径 chdir('/xampp/htdocs/drupal'); define('DRUPAL_ROOT', '/xampp/htdocs/drupal'); // 包含必要的文件 include_once ('./includes/bootstrap.inc'); drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE); // 现在就可以使用 db_query(). $result = db_query('SELECT title FROM {node}'); print_r($result); echo '<br>'; // 从数据库返回多于一个字段的值,这是典型的迭代方式逐步访问结果集: $type = 'page'; $status = 1; $i = 0; $result = db_query( "SELECT nid, title FROM {node} WHERE type = :type AND status =:status", array( ':type' => $type, ':status' => 1 )); print_r($result); echo '<br>'; foreach ($result as $row) { $i++; echo '第'.$i.'个页面的标题是<br>'; echo $row->title . '<br />'; } // 高级查询 $query = db_select('role', 'r'); $query->condition('rid', 2)->fields('r', array( 'name' )); $result = $query->execute(); foreach ($result as $row) { echo $row->name . "<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 />'; } // 使用分页器,由于不是标准的模块所以分页器用不了 // include_once 'G:\xampp\htdocs\drupal\includes\module.inc'; // $query = db_select('node', 'n')->extend('PagerDefault'); // $query // ->condition('type', 'page') // ->fields('n', array('title')) // ->limit(10); // $output = ''; // $result = $query->execute(); // foreach ($result as $row) // { // $output .= $row->title . "<br/>"; // } // include_once 'G:\xampp\htdocs\drupal\includes\theme.inc'; // $output .= theme('pager'); // print $output;
知识共享署名-非商业性使用-相同方式共享:码农场 » Chapter 05: Working with Databases Drupal数据库操作
据称大家应该尽量使用 db_query而非db_select。只有在要使用extender,比如pager或者tablesort的情况下,才需要使用db_select,因为db_select效率太低。
学习了!