一、discuz数据操作之查:

1、fetch_all
 DB::fetch_all(sql, $arg = array());//取出符合条件的所有数据
 sql为查询语句,$arg为绑定参数
 例:$result = DB::fetch_all(\'SELECT * FROM %t\',array(\'table_name\'));
 $result为二维数组
2、fetch_first
 DB::fetch_first(sql, $arg = array());//取出符合条件的第一条数据
 例:$result = DB::fetch_first(\'SELECT * FROM %t \', array(\'table_name\'));
 $result为一维数组

 

二、discuz数据操作之增:

DB::insert(参数一,参数二,参数三);
 /*
 参数一:table_name
 参数二:以对应数据表中的字段为key,具体数值为value组成的关联数组
 参数三:是否返回该数据的id。true则返回具体id,false则不会返回id
 */
 例:DB::insert(\'table_name\',[\'name\'=>\'张三\',\'age\'=>\'18\',\'sex\'=>\'男\'],true);

 

三、discuz数据操作之改:

DB::update(参数一,参数二,参数三);
 /*
 参数一:table_name
 参数二:以对应数据表中的字段为key,具体数值为value组成的关联数组
 参数三:修改的where条件
 */
 例:DB::update(\'table_name\',[\'name\'=>\'张三\',\'age\'=>\'19\',\'sex\'=>\'男\'],\' id = 1 \');

 

四、discuz数据操作之删:

 DB::delete(参数一,参数二);
 /*
 参数一:table_name
 参数二:删除的where条件
 */
 例:$sql = \'id = \'.$id;
 DB::delete(\'table_name\',$sql);

 

以上是discuz的基本数据库操作。但实际开发中会对数据操作进行再封装,实际暴露的借口是用C::t()方法来进行数据操作

具体操作在source/class/table文件夹内创建一个文件

文件名为table_表名(注:是去掉表前缀的名字),例如:数据库中表名为pre_forum_post,那么该文件的名字为table_forum_post.php

例:
table_forum_design_list.php
<?php
/**
 *      [Discuz!] (C)2001-2099 Comsenz Inc.
 *      This is NOT a freeware, use is subject to license terms
 *
 *      $Id: table_forum_access.php 27777 2012-02-14 07:07:26Z zhengqingpeng $
 */
if(!defined(\'IN_DISCUZ\')) {
    exit(\'Access Denied\');
}

class table_forum_design_list extends discuz_table
{
    public function __construct() {

    $this->_table = \'forum_design_list\';
    $this->_pk    = \'\';

    parent::__construct();
    }


    public function get_all() {
    return DB::fetch_all(\'SELECT * FROM %t WHERE st != 0\', array($this->_table));
    }
    public function insert($data)
    {
        return DB::insert($this->_table,$data,true);
    }
    public function delete($id)
    {
        $sql = \'id = \'.$id;
        return DB::delete($this->_table,$sql);
    }
}
?>
//外部文件调用方式
$result = C::t(\'forum_design_list\')->get_all();
$result = C::t(\'forum_design_list\')->insert($data);
$result = C::t(\'forum_design_list\')->delete(1);

 

 

根据上面代码所见,所有的直接操作数据库的操作都会写在表对应的class文件里。

补充一点,如何执行原生sql语句。

DB::query(sql,$arg = array());

转载请写明出处:陈先生的博客|IT咸鱼 » Discuz二次开发之数据库操作 

 https://1024php.cn/php/61

版权声明:本文为yehuisir原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yehuisir/p/13863901.html