前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二次开发mysql数据反推_Discuz二次开发之数据库操作

二次开发mysql数据反推_Discuz二次开发之数据库操作

作者头像
全栈程序员站长
发布2022-08-31 09:54:09
4090
发布2022-08-31 09:54:09
举报

大家好,又见面了,我是你们的朋友全栈君。

一、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 extendsdiscuz_table

{public function__construct() {$this->_table = ‘forum_design_list’;$this->_pk = ”;

parent::__construct();

}public functionget_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());

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档