放牧代码和思想
专注自然语言处理、机器学习算法

Chapter 05: Working with Databases Drupal数据库操作

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数据库操作

分享到:更多 ()
  1. 据称大家应该尽量使用 db_query而非db_select。只有在要使用extender,比如pager或者tablesort的情况下,才需要使用db_select,因为db_select效率太低。

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机