开 发dz3.0插件的朋友都知道,在开发插件中,大部分插件都要涉及到数据库的操作,而官方提醒开发插件要尽量用官方提供的数据库操作函数,但是我在网上找 了很多资料,都没有看到数据库操作函数的一些具体说明,不得已只能自己看函数,算是对数据库操作函数有了点基本了解,今天我就给大家分享出来。

首先我要来介绍2个文件

【1】/source/class/db/db_driver_mysql.php   内部SQL处理库 文件里类为(db_driver_mysql)

【2】/source/class/discuz/discuz_database.php  全局SQL语句处理类 文件里类为(discuz_database)

我们用到的数据库操作函数基本是第【2】 个文件中里的函数,而第【2】 个文件中的函数有好些是来自第【1】 个文件函数,只是重新封装了下

在开发插件中我们常用到的函数是来自第【2】 个文件,废话不多说了,来说明函数吧。

注意提示:下边发遇到pre_都为dz数据表前缀
table($table)

参数:$table---数据库表名称

作用:给表加前缀,如数据库表名称为common_cron,调用函数会在表前添加安装dz时所填写的数据表前缀,如pre_common_cron

本函数是将db_driver_mysql类中的table_name($tablename)函数重新封装

delete($table, $condition, $limit = 0, $unbuffered = true)

参数:$table---数据库表名称

$condition---可以是数字也可以是变量,存放where条件语句,为数组的时候比较复杂,一般都说是为变量,直接 存放where条件

作用:按where条件删除$table表里的对应数据

  1. 实例讲解:删除pre_com数据表中id为1的记录
  1. $table="com";
  1. $condition="id=1";
  1. DB::delete($table, $condition, $limit = 0, $unbuffered = true)
insert($table, $data, $return_insert_id = false, $replace = false, $silent = false)

参数:$table---数据库表名称

$data---数组,如要在$table 中的title和content字段中插入“标题”和“内容”,$data的值可以为

$data=array(“title”=>"标题",“content”=>"内容")

注意:MySQL 3.22.10或以后版本才可以使用此函数

作用:插入数据,如果$replace参数设置为true,改函数功能可以验证数据是否存在,不存在插入,存在更新记录,$return_insert_id参数设置为true将返回新插入的记录ID

  1. 实例讲解:在pre_com中的title和content字段中插入“标题”和“内容”
  1. $table="com";
  1. $data=array("title"=>"标题","content"=>"内容")
  1. DB::insert($table, $data, $return_insert_id = false, $replace = false, $silent = false)
update($table, $data, $condition, $unbuffered = false, $low_priority = false)

参数:

$table---数据库表名称

$data---数组,如要更新$table 中的title和content字段为“标题”和“内容”,$data的值可以为$data=array(“title”="标题",“content”="内容")

$condition---可以是数字也可以是变量,存放where条件语句,为数组的时候比较复杂,一般都说是为变量,直接 存放where条件

作用:

更新数据表中的记录

  1. 实例讲解:在表pre_com中更新id为1的title和content字段值为“标题”和“内容”
  1. $table="com";
  1. $data=array("title"=>"标题","content"=>"内容");
  1. $condition="id=1";
  1. DB::update($table, $data, $condition, $unbuffered = false, $low_priority = false)
insert_id()作用:

返回前次插入记录的ID

是对db_driver_mysql种函数insert_id()重新封装

函数原型

  1. function insert_id()
  1. {
  1. return ($id = mysql_insert_id($this->curlink)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
  1. }
fetch($resourceid, $type = MYSQL_ASSOC)

参数:

$resourceid-是mysql_query($SQL) 的返回值,或者是dz定义函数query()的返回值

作用:

结果集中取得一行作为关联数组,或数字数组,或二者兼有,相当于执行php中mysql_fetch_array(data,array_type)函数

是将db_driver_mysql类中fetch_array函数重新封装

  1. 函数原型为
  1. function fetch_array($query, $result_type = MYSQL_ASSOC) {
  1. return mysql_fetch_array($query, $result_type);
  1. }
  1. fetch函数原型为
  1. public static function fetch($resourceid, $type = MYSQL_ASSOC) {
  1. return self::$db->fetch_array($resourceid, $type);
  1. }
fetch_first($sql, $arg = array(), $silent = false)

参数:

$sql-要执行的sql语句

作用:获取集合中的第一条记录

  1. $sql=“select * from table ”;
  1. $n=fetch_first($sql)
  1. 以上功能就相当于
  1. $sql=“select * from table ”;
  1. $query=mysql_query($sql)
  1. $n=mysql_fetch_array($sql);
fetch_all($sql, $arg = array(), $keyfield = '', $silent=false)

参数:

$sql-要执行的sql语句

作用:获取集合中的全部记录

  1. $sql=“select * from table ”;
  1. $n[]= DB::fetch_all ($sql)
  1. 以上功能相当于
  1. $sql=“select * from table ”;
  1. $query=mysql_query($sql)
  1. while ($row = self::$db->fetch_array($query))
  1. {
  1. $n[] = $row;
  1. }
result($resourceid, $row = 0)

参数:

$resourceid-是mysql_query($SQL) 的返回值,或者是dz定义函数query()的返回值

$row-或者那一行的字段值

作用:

获取记录集中某个字段的值

  1. 执行此函数相当于执行php中mysql_result($query, $row)函数
query($sql, $arg = array(), $silent = false, $unbuffered = false)

参数:$sql-要执行的sql语句

作用:

执行一条sql语句

如果sql语句为“select .....”函数返回记录集,如果为“UPDATE或者DELETE”函数返回操作所影响的记录条数,如果为“INSERT”函数返回新插入记录的id

执行query($sql)函数类似执行php中mysql_query($sql)

num_rows($resourceid)

参数:

$resourceid-是mysql_query($SQL) 的返回值,或者是dz定义函数query()的返回值

作用:

返回记录条数

执行num_rows($query)相当于执行php中mysql_num_rows($query);

affected_rows()

作用:

返回上次操作所影响的记录条数

执行affected_rows()相当于执行php中mysql_affected_rows()

本贴原文来自:http://www.cms97.com/read.php?tid=37

转载于:https://www.cnblogs.com/jevil/p/3559406.html

dz3.0数据库操作函数分析说明相关推荐

  1. ecshop mysql 报错_ecshop数据库操作函数

    ecshop数据库操作函数 eschop二次开发一些常见的开发例子.来谈谈ecshop的数据库类和方法是如何处理数据库.让我们熟练掌握ecshop数据库的操作. 1:ecshop的数据库类实例子化对象 ...

  2. Spark Streaming中的操作函数分析

    参考文章:http://blog.csdn.net/dabokele/article/details/52602412 根据Spark官方文档中的描述,在Spark Streaming应用中,一个DS ...

  3. Yii 1.0 数据库操作 增、删、改、查 、对象转数组

    1.根据条件查询一个集合 $objectResult=Post::model()->findAll($condition,$params);  $objectResult=Post::model ...

  4. phpcms v9 数据库操作函数

    表明默认当前load_model('xxxx')模块所在表名xxxx 若要指定表名  则:操作在mysql.class.php中$this->db->select(...) 1.查询    ...

  5. linux skb 结构和相关操作函数分析

    sk_buff是Linux网络中最核心的结构体,它用来管理和控制接收或发送数据包的信息.各层协议都依赖于sk_buff而存在.内核中sk_buff结构体在各层协议之间传输不是用拷贝sk_buff结构体 ...

  6. **汇总CodeIgniter(CI)的数据库操作函数

    //查询: $query = $this->db_query("SELECT * FROM table");  =============================== ...

  7. php 5.0打印数据库,thinkphp5.0数据库操作

    ThinkPHP数据库处理: 1.MySQL的数据库连接 首先配置database.php文件 使用{dump(config('database));}来查看数据库的配置项 使用 {$res = Db ...

  8. thinkphp5.0连接mysql_thinkphp5.0数据库操作

    ThinkPHP数据库处理: 1.MySQL的数据库连接 首先配置database.php文件 使用{dump(config('database));}来查看数据库的配置项 使用 {$res = Db ...

  9. phalapi 数据库锁_phalApi数据库操作

    在很多时候,我们会遇到数据库表里面的某个值需要+1操作,我们不能简单地在update的时候写入array('key' => 'key+1'),因为在解析sql的时候,key+1 会带上引号作为一 ...

最新文章

  1. 重构手法之简化函数调用【1】
  2. PHP二维数组根据字段排序
  3. nginx websocket proxy
  4. 前端开发工程化探讨--基础篇(长文)
  5. 重新定义代理的扩展性:WebAssembly在Envoy与Istio中的应用
  6. 理想的互联网服务后台框架的九个要点
  7. 2021-10-28 python爬虫学习
  8. python视频帧提取并保存_如何用python实现视频关键帧提取并保存为图片?
  9. 为何你写的文案打不动不了人心?
  10. github上看到的springboot做的后台管理系统,bootdo,适合大家学习入门
  11. 将python(py文件)转换成.exe方法
  12. 数据结构 第2版 第二版 陈越_高中数学选学---人教A版选修2-1第二章第二节椭圆...
  13. 连上手机就能偷你信息?一定要注意你身边的共享充电宝。
  14. yahoo雅虎邮箱开通直邮(pop)功能
  15. 神经网络图像细节分析,神经网络 图像相似度
  16. wget - Linux系统下载文件工具
  17. 一个BUG导致3000万损失!涉及资金交易的功能该如何做好测试和项目管理
  18. L1-7 矩阵列平移
  19. 啊哈算法——第四章:搜索
  20. 无法启动Microsoft Office Outlook 无法打开 Outlook窗口

热门文章

  1. 用python实现队列的循环左移和右移的实验原理_python的移位操作实现详解
  2. 天龙八部手游linux源码,天龙八部手游登录源码
  3. python什么是堆什么是栈_顶置篇:CPython的内存概念:栈、堆和引用
  4. system verilog编程题_拼多多2020校招部分算法编程题合集
  5. vs qt 在linux运行,QT安装以及使用(QT支持linux和windows,也支持C/C++代码的编译运行,比vs简洁多)...
  6. 重启手机出现机器人加一个叹号_解决win10上不了网出现红叉,网卡驱动异常代码56的问题...
  7. Linux文件目录操作
  8. Extjs 从grid中导出Excel表格。后台为C#(绝对好用)(按照自己的需求修改版本)...
  9. 2018杭电多校第二场1006(容斥原理,组合数学)
  10. 锁Lock,主要是重入锁和读写锁