0

0

drupal7中基本的数据库操作实例详解

PHP中文网

PHP中文网

发布时间:2017-06-03 09:52:53

|

1642人浏览过

|

来源于php中文网

原创

drupal是用数据库来存网站内容的,不像静态页那样直接是html文件,Drupal 7 数据库API增加了一些新的功能让语法更加清晰,使用也更加方便。它还能使用查询生成器来构造查询对象的能力,无需在代码中写原始的SQL语句,一是提高了代码可阅读性,二是兼容所有数据库。下面就列罗出一些经常使用的技巧,可能不够全面,还请大家多多补充。

1. 单表查询(最基本使用方法)

$result db_select('contact''c')  //选择表contact,名一个别名c
->fields('c'//查询c表中的字段,后面不跟参数就是查询所有
->execute()  //执行操作
->fetchAssoc(); //处理结果集
?>

2. 条件查询(condition)

    $result db_select('node''n')
    ->
fields('n')
    ->
condition('nid'5,'=')  //nid等于5的条件
    
->condition('status'0,'>'// 状态大于0,也就是为真等于1
    
->condition('uid', array(1,5,7),'IN'//使用IN操作,当然还可以使用 NOT IN
    
->execute()
    ->
fetchAssoc();
?>

3. 联合查询(Join)

$query db_select('field_data_field_slide','f'); //主表

$query->join('node''n''fa.entity_id = n.nid'); // 联合node表,条件是nid

$query->condition('f.field_slide_channel_tid',$chanid,'=');

$query->condition('n.status','1','=');  //发布状态

$query->fields('n',array('nid'));  //查询nid

$query->orderBy('n.nid','DESC'); //排序条件

  
$query->range(0,4); //取得4条数据

   
$result $query->execute();
   
?>

4.添加字段(addField)

    $query db_select('taxonomy_term_hierarchy','h'); //选择表
    
$query->join('taxonomy_term_data','d','h.tid = d.tid'); // 联合查询
    
$query->addField('d''tid'); // 添加字段
    
$query->condition('h.parent',0); // 添加条件where 
    
$query->condition('d.vid',$vid); // 再添加一个条件 and ....
    
$query->addTag('ditusearch_generate_path'); // 添加Tag 可选项,这个就是方便其他地方可以改变这   个查询$query 比如如果添加了tag 可以使用 hook_query_alter 对其进行查询 如果你使用过views开发,views 也可以了类似的hook
    
$tid $query->execute()->fetchCol();
    
?>

5.分页使用(pager)

  $query db_select('node''n')
      ->
condition('type''article')
      ->
fields('n');
  
$query $query->extend('PagerDefault')->limit(2); //limit条件是分页数目
  
$result $query->execute();
  foreach(
$result as $res){
     
$output .= $res->title;
   }
    
$output .= theme(‘pager’); //添加分页theme
    
Return $output
    
?>

6.多表联合分页

  $query db_select('field_data_field_news','fa')->extend('PagerDefault'); //多表联合查询extend条件必须放在db_select之后

  
$query->join('node','n','fa.entity_id = n.nid');

  
$query->join('field_data_field_news_date_sort''fb''fa.entity_id = fb.entity_id');

  
$query->fields('n', array('nid','title'));

  
$query->condition('fa.field_news_classify_tid',$tids,'in'); 

  
$query->condition('n.type','news','='); 

  
$query->condition('n.status','1','=');     

$query->orderBy('fb.field_news_date_sort_value','DESC');

  
$query->limit(14);

   
$result $query->execute();
   
?>


function _module_name_autocomplete($string) {
  
$matches = array();
  
  
// Some fantasy DB table which holds cities
  
$query db_select('cities''c');
  
// Select rows that match the string
  
$return $query
    
->fields('c', array('city'))
    ->
condition('c.city''%' db_like($string) . '%''LIKE')
    ->
range(010)
    ->
execute();
  
  
// add matches to $matches  
  
foreach ($return as $row) {
    
$matches[$row->city] = check_plain($row->city);
  }
  
  
// return for JS
  
drupal_json_output($matches); //--json格式返回
}

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Django 教程
Django 教程

共28课时 | 2.6万人学习

MySQL 教程
MySQL 教程

共48课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号