Discuz作为流行的论坛程序,有着很多人都采用它来搭建论坛。而且有很多人对它进行二次开发,就是我们经常说的二开。因为功能强大,所以才有很多人对它进行二次开发,可以说通过二次开发,discuz可以改进成各种类型网站。它可以是论坛,也可以是内容类型网站,也可是购物网站,还可以是小说站,总之,通过二次开发,我们可以使用discuz来做各种类型的网站。

今天我们就简单介绍下,如何获取数据库中表的数据,我想这应该是最基本,也是最重要的一个知识点。

首先,discuz中的数据库是单例模式,我么可以通过它来查询我们的数据,最简单的方法是使用sql语句来查询。

$query = $db->query("SELECT t.*, f.name FROM {$tablepre}threads t, {$tablepre}forums f WHERE t.fid<>'$fid' AND f.fid=t.fid ORDER BY t.dateline DESC LIMIT 0, 8");

通过这个语句,我们就可以从板块forum表和帖子表threads中查询出帖子信息和板块信息,其中需要注意的是,我们使用{$tablepre}这个占位符来表示表前缀,这样的代码没有写死,即使表前缀修改了,依然可以查出数据。

while($nthread = $db->fetch_array($query))

通过山面的查询,我们就可以循环得到帖子的数据放到我们想要的数组中,还可以给数组添加一些新的元素。

当然,discuz还做了数据分层处理,在source/class/table文件夹里面是各个表的数据操作,我们如果有新添加的表处理,可以在这里添加文件,然后文件中定义类继承discuz_table就可以获取到数据表中的数据,discuz_table中的数据操作方法如下:

DB::table($tablename) 获取正确带前缀的表名,转换数据库句柄

DB::delete($tablename, 条件,条数限制) 删除表中的数据

DB::insert($tablename, 数据(数组),是否返回插入ID,是否是替换式,是否silent) 插入数据操作

DB::update($tablename, 数据(数组)条件) 更新操作

DB::fetch(查询后的资源) 从结果集中取关联数组,注意如果结果中的两个或以上的列具有相同字段名,最后一列将优先。

DB::fetch_first($sql) 取查询的第一条数据fetch

DB::fetch_all($sql) 查询并fetch

DB::result_first($sql) 查询结果集的第一个字段值

DB::query($sql) 普通查询

DB::num_rows(查询后的资源) 获得记录集总条数

DB::_execute(命令,参数) 执行mysql类的命令

DB::limit(n,n) 返回限制字串

DB::field(字段名, $pid) 返回条件,如果为数组则返回 in 条件

DB::order(别名, 方法) 排序

比如:public function fetch_all_fid_by_uids($uids) {

if(empty($uids)) {

return array();

}

$data = array();

$query = DB::query("SELECT fid FROM %t WHERE %i AND level>0 ORDER BY lastupdate DESC", array($this->_table, DB::field('uid', $uids)));

while($row = DB::fetch($query)) {

$data[] = $row['fid'];

}

return $data;

}

我们定义了一个方法,然后在控制层中,我们就可以直接调用fetch_all_fid_by_uids这个方法获取到数据。条用方法如下:C::t('forum_groupuser')->fetch_all_fid_by_uids($_G['uid']);

我们通过C::t来获取到数据表实例化对象,然后调用类方法就可以获取到数据。

discuz mysql data_discuz调取数据库数据相关推荐

  1. discuz mysql data_Discuz!显示 Database Error的原因和解决方法

    今天打开Discuz搭建的论坛显示: 原因一:数据库表太大 比如mysql数据库的表内容太大,超过10G就有可能会影响discuz论坛的运行. Discuz! Database Error是什么原因, ...

  2. MySQL语句查询数据库数据并添加到Redis缓存

    自从工作到现在已经四个月有余了,一直想要分享一下近期的所思所想,记录一下自己的成长,但碍于时间问题,并没有实现.今天终于有时间啦,那我就分享一个最近在做的东西. 目录 需求 做法 问题与解决 需求 从 ...

  3. mysql中清空数据库数据保留表结构

    – mysql导出视图以及表结构 #mysqldump -uuser -ppassword --d database_name> database_name_date.sql – 只导出数据不导 ...

  4. mysql中清空数据库数据保留表结构(史上最简单,一句话搞掉)

    这里简单说下我们公司信息化平台在云上部署上线的情景,mysql数据库被分在了测试机和正式机,测试机是开发人员对数据库进行表结构修改例如字段信息的场景,而正式机是对外部的业务,因此正式机的数据是最终使用 ...

  5. 将数据库服务器的文件D 改名为,MySQL如何更改数据库数据存储目录详解

    前言 MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录.下文总结整理了实践过程的操作步骤.话不多说了,一起来看看吧 ...

  6. mysql sqlserver schema_MySQL数据库数据迁移到SQLserver

    最近因工作需要,需要将mysql数据库迁移到sqlserver,仅仅是数据迁移,因此相对比较简单.对于mysql迁移到sqlserver,我们需要使用到mysql odbc驱动,然后透过sqlserv ...

  7. linux上mysql定时备份数据库数据_Linux下如何实现MySQL数据库每天定时自动备份

    在云计算的浪潮下,企业多将业务部署在云上.对于数据库中的数据,直接使用云数据库自带的备份功能实现备份,操作简单.但是云数据库备份数据的存储空间有限制,一旦超出存储量便自动关闭备份功能,运维人员往往也会 ...

  8. mysql 自动备份数据库数据到另一台电脑上(u盘或者移动硬盘上)

    下载MySQL Tools for 5.0这个工具,连接服务器上的mysql生产数据库,然后进入界面,选择backup,设置基本的配置,选择一个保存路径,就可以实现备份,创建过程如图过程:

  9. phpexcel mysql 导出_PHPEXCEL结合MYSQL+PHP实现数据库数据导出EXCEL实例

    PS:这是本人在编写业务处理系统时,结合PHPEXCEL官方实例,编写的一个.感觉还不错.分享一下. error_reporting(E_ALL); date_default_timezone_set ...

最新文章

  1. linux 安装安装rz/sz 和 ssh
  2. Cracking The Coding Interview5.2
  3. go sync.map 源码分析
  4. sublime_text快捷键
  5. div中赋值html字符串
  6. 2020年使用最多的大数据分析工具
  7. Jmeter学习之旅(四)——各类型的HTTP接口功能测试
  8. 今日头条的个性化推荐
  9. 固态硬盘是什么接口_【扫盲贴】SSD固态硬盘硬盘接口大全,你值得拥有!
  10. SQL Server 2019下载及安装教程
  11. 计算机显示错误屏幕,如何解决显示器分辨率错误
  12. c语言以字符输出88,C语言88案例完整版
  13. 拼多多商家如何运营好店铺?商家如何一键打单?
  14. 黄色也要黄的有点品位 图
  15. IDEA中MAVEN项目Dependency not found 问题
  16. Spring之完整版学习笔记
  17. 【隐私大战】疫情下的“奢侈品”
  18. Leetcode_577_员工奖金_SQL
  19. iOS字体不清晰问题
  20. 自学笔记十四:Matlab浮点型:创建和转换、取值范围、运算和精度问题

热门文章

  1. 【344天】我爱刷题系列103(2018.01.15)
  2. 在TensorFlow中实现文本分类的卷积神经网络
  3. MyBatis_Generator的使用(实践)
  4. 利用第三方工具上传文件
  5. 探秘ReSharper 8新功能——XAML编辑
  6. 关于使用yum“The program package-cleanup is...”的解决办法
  7. FarPoint表格数字框中小数点位数的设置
  8. 《奠基计算机网络》所需软件 下载地址
  9. 转贴XML的写法建议
  10. JavaScript 作用域不完全指北