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表里的对应数据






    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