二次开发mysql数据反推_Discuz二次开发之数据库操作
大家好,又见面了,我是你们的朋友全栈君。
一、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());
相关文章
- Navicat连接MySQL数据库报错1045
- MySQL Error number: MY-011718; Symbol: ER_GRP_RPL_EXIT_GRP_GCS_ERROR; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL数据库数据删除操作详解
- MySql 数据类型详解数据库
- MySQL 字段替换:轻松操作更新数据库(mysql字段替换)
- 解决Mysql 数据库连接问题(mysql数据库无法连接)
- 重装系统后恢复Mysql数据库(重装系统后恢复mysql)
- MySQL 登录名的必要性与使用方法(mysql登录名)
- MySQL 数据库中的 db.myi 文件解析(mysqldb.myi)
- 深入探究MySQL数据库:技术研究、应用及优化(mysql研究)
- MySQL 误删除数据的恢复方法(mysql误删恢复)
- MySQL数据同步导入Redis存储(mysql导入redis)
- MySQL实现用户授权的有效方式(mysql对用户授权)
- 数据实现极速性能:使用Redis缓存MySQL数据(redis缓存mysql)
- MySQL:构建灵活的数据库选择(mysql选择)
- MySQL 数据库数据增长如何应对?(mysql数据增长)
- 如何在 MySQL 数据库中建立用户?(mysql数据库建立用户)
- 高效同步MySQL数据,轻松管理——MySQL数据同步软件(mysql数据同步软件)
- 解决MySQL重复数据的有效方法(mysql 重复数据去重)
- MySQL数据库文件:找出正确的位置(mysql数据库文件位置)
- 安全签署MySQL数据库防范攻击(signedmysql)
- 如何在MySQL中修改字体大小(mysql中修改字体大小)
- 使用C语言操纵MySQL数据库的简单代码(c mysql数据库代码)
- 如何使用CMD进入MySQL路径(cmd进入mysql路劲)
- MySQL无法通过CMD启动(cmd打开mysql失败)
- MySQL在处理500万数据中的表现(500万数据mysql)
- MySQL 数据库如何保存和查询年龄(mysql_年龄)
- 如何启动MySQL数据库一步步教你启动MySQL(mysql_启动)
- 使用 MySQL 计算两张表数据的巧妙方法(mysql 两张表计算)
- MySQL下载后只有安装文件,缺少数据库文件怎么办(mysql下载完只有文件)
- 详解远程连接Mysql数据库的问题(ERROR2003(HY000))