• 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

  • 相关阅读:
    cocos2dx 动画控制概要
    lua与C交互 具体
    lua与C/C++交互概要
    3D图像算法
    lua 语言笔记
    iostransitiontranslate闪屏问题总结
    document.onreadystatechange()来判断页面加载完
    JavaScript装逼指南
    box-shadow 阴影
    web小技巧
  • 原文地址:https://www.cnblogs.com/jevil/p/3559406.html
Copyright © 2020-2023  润新知