dz3.0数据库操作函数分析说明
开 发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表里的对应数据
- 实例讲解:删除pre_com数据表中id为1的记录
- $table="com";
- $condition="id=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
- 实例讲解:在pre_com中的title和content字段中插入“标题”和“内容”
- $table="com";
- $data=array("title"=>"标题","content"=>"内容")
- 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条件
作用:
更新数据表中的记录
- 实例讲解:在表pre_com中更新id为1的title和content字段值为“标题”和“内容”
- $table="com";
- $data=array("title"=>"标题","content"=>"内容");
- $condition="id=1";
- DB::update($table, $data, $condition, $unbuffered = false, $low_priority = false)
insert_id()作用:
返回前次插入记录的ID
是对db_driver_mysql种函数insert_id()重新封装
函数原型
- function insert_id()
- {
- return ($id = mysql_insert_id($this->curlink)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
- }
fetch($resourceid, $type = MYSQL_ASSOC)参数:
$resourceid-是mysql_query($SQL) 的返回值,或者是dz定义函数query()的返回值
作用:
结果集中取得一行作为关联数组,或数字数组,或二者兼有,相当于执行php中mysql_fetch_array(data,array_type)函数
是将db_driver_mysql类中fetch_array函数重新封装
- 函数原型为
- function fetch_array($query, $result_type = MYSQL_ASSOC) {
- return mysql_fetch_array($query, $result_type);
- }
- fetch函数原型为
- public static function fetch($resourceid, $type = MYSQL_ASSOC) {
- return self::$db->fetch_array($resourceid, $type);
- }
fetch_first($sql, $arg = array(), $silent = false)参数:
$sql-要执行的sql语句
作用:获取集合中的第一条记录
- $sql=“select * from table ”;
- $n=fetch_first($sql)
- 以上功能就相当于
- $sql=“select * from table ”;
- $query=mysql_query($sql)
- $n=mysql_fetch_array($sql);
fetch_all($sql, $arg = array(), $keyfield = '', $silent=false)参数:
$sql-要执行的sql语句
作用:获取集合中的全部记录
- $sql=“select * from table ”;
- $n[]= DB::fetch_all ($sql)
- 以上功能相当于
- $sql=“select * from table ”;
- $query=mysql_query($sql)
- while ($row = self::$db->fetch_array($query))
- {
- $n[] = $row;
- }
result($resourceid, $row = 0)参数:
$resourceid-是mysql_query($SQL) 的返回值,或者是dz定义函数query()的返回值
$row-或者那一行的字段值
作用:
获取记录集中某个字段的值
- 执行此函数相当于执行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数据库操作函数分析说明相关推荐
- ecshop mysql 报错_ecshop数据库操作函数
ecshop数据库操作函数 eschop二次开发一些常见的开发例子.来谈谈ecshop的数据库类和方法是如何处理数据库.让我们熟练掌握ecshop数据库的操作. 1:ecshop的数据库类实例子化对象 ...
- Spark Streaming中的操作函数分析
参考文章:http://blog.csdn.net/dabokele/article/details/52602412 根据Spark官方文档中的描述,在Spark Streaming应用中,一个DS ...
- Yii 1.0 数据库操作 增、删、改、查 、对象转数组
1.根据条件查询一个集合 $objectResult=Post::model()->findAll($condition,$params); $objectResult=Post::model ...
- phpcms v9 数据库操作函数
表明默认当前load_model('xxxx')模块所在表名xxxx 若要指定表名 则:操作在mysql.class.php中$this->db->select(...) 1.查询 ...
- linux skb 结构和相关操作函数分析
sk_buff是Linux网络中最核心的结构体,它用来管理和控制接收或发送数据包的信息.各层协议都依赖于sk_buff而存在.内核中sk_buff结构体在各层协议之间传输不是用拷贝sk_buff结构体 ...
- **汇总CodeIgniter(CI)的数据库操作函数
//查询: $query = $this->db_query("SELECT * FROM table"); =============================== ...
- php 5.0打印数据库,thinkphp5.0数据库操作
ThinkPHP数据库处理: 1.MySQL的数据库连接 首先配置database.php文件 使用{dump(config('database));}来查看数据库的配置项 使用 {$res = Db ...
- thinkphp5.0连接mysql_thinkphp5.0数据库操作
ThinkPHP数据库处理: 1.MySQL的数据库连接 首先配置database.php文件 使用{dump(config('database));}来查看数据库的配置项 使用 {$res = Db ...
- phalapi 数据库锁_phalApi数据库操作
在很多时候,我们会遇到数据库表里面的某个值需要+1操作,我们不能简单地在update的时候写入array('key' => 'key+1'),因为在解析sql的时候,key+1 会带上引号作为一 ...
最新文章
- 重构手法之简化函数调用【1】
- PHP二维数组根据字段排序
- nginx websocket proxy
- 前端开发工程化探讨--基础篇(长文)
- 重新定义代理的扩展性:WebAssembly在Envoy与Istio中的应用
- 理想的互联网服务后台框架的九个要点
- 2021-10-28 python爬虫学习
- python视频帧提取并保存_如何用python实现视频关键帧提取并保存为图片?
- 为何你写的文案打不动不了人心?
- github上看到的springboot做的后台管理系统,bootdo,适合大家学习入门
- 将python(py文件)转换成.exe方法
- 数据结构 第2版 第二版 陈越_高中数学选学---人教A版选修2-1第二章第二节椭圆...
- 连上手机就能偷你信息?一定要注意你身边的共享充电宝。
- yahoo雅虎邮箱开通直邮(pop)功能
- 神经网络图像细节分析,神经网络 图像相似度
- wget - Linux系统下载文件工具
- 一个BUG导致3000万损失!涉及资金交易的功能该如何做好测试和项目管理
- L1-7 矩阵列平移
- 啊哈算法——第四章:搜索
- 无法启动Microsoft Office Outlook 无法打开 Outlook窗口
热门文章
- 用python实现队列的循环左移和右移的实验原理_python的移位操作实现详解
- 天龙八部手游linux源码,天龙八部手游登录源码
- python什么是堆什么是栈_顶置篇:CPython的内存概念:栈、堆和引用
- system verilog编程题_拼多多2020校招部分算法编程题合集
- vs qt 在linux运行,QT安装以及使用(QT支持linux和windows,也支持C/C++代码的编译运行,比vs简洁多)...
- 重启手机出现机器人加一个叹号_解决win10上不了网出现红叉,网卡驱动异常代码56的问题...
- Linux文件目录操作
- Extjs 从grid中导出Excel表格。后台为C#(绝对好用)(按照自己的需求修改版本)...
- 2018杭电多校第二场1006(容斥原理,组合数学)
- 锁Lock,主要是重入锁和读写锁