Discuz!X数据库函数操作方法及例程
Discuz!X数据库函数操作方法及例程
数据库操作文件
/table/table_user.php
class table_user extends discuz_table { public function __construct(){ $this->_table = "user"; parent::__construct(); } }
以插件local下的数据表user为例:
【1】增加操作
使用插入函数DB::insert($table, $arr, 是否返回插入ID, 是否是替换式, 是否silent)
public function add_user_info($user_info, $return_insert_id = false){ return DB::insert($this->_table, $user_info, $return_insert_id); }
在处理文件user.inc.php上执行处理:
$user_info = array( "user_id"=>$user_id, "user_name"=>$user_name ); $add_flag = C::t("#local#user")->add_user_info($user_info, TRUE);
【2】删除操作
(2-1)使用删除函数DB::delete($tablename, 条件,条数限制)
public function delete_user_info_by_id($user_info){ return DB::delete($this->_table, $user_info); }
(2-2)使用普通查询函数DB::query($sql)
public function delete_user_info_by_id($id){ DB::query("DELETE FROM %t WHERE id=%d", array($this->_table, $id)); }
user.inc.php:
$user_info = array( "user_id"=>$user_id ); $delete_flag = C::t("#local#user")->delete_user_info_by_id($user_info);
【3】更新操作
使用更新函数DB::update($table, 数据(数组)条件)
public function update_user_info($user_info, $user_id){ return DB::update($this->_table, $user_info, "user_id=$user_id"); }
【4】查询操作
(4-1)DB::fetch_all($sql) 获取所有信息
public function fetch_user_info($user_id){ //$user_id不是主键id return DB::fetch_all("SELECT * FROM %t WHERE user_id=%d", array($this->_table, $user_id)); //获取$user_id相同的信息 }(4-2)DB::fetch_first($sql) 获取单条信息
public function fetch_user_info_by_id($id){ //$id是主键id return DB::fetch_first("SELECT * FROM %t WHERE id =%d", array($this->_table, $id)); }
* fetch_all() 获取到的数据为二维数组(或多维)
fetch_first() 获取到的数据为一维数组
【5】模糊查询
DB::fetch_first("SELECT * FROM %t WHERE name LIKE %s", array($this->_table,"%".$str."%"));
【6】左关联+模糊查询
DB::fetch_all("SELECT c.start_time, c.end_time, i.name name FROM " . DB::table("table1") . " c left join " . DB::table($this->_table) ." i ON i.id = c.coupons_shop WHERE name LIKE %s", array("%".$str."%"));
注意点:
(1)连接符” . ”和连接的内容之间必须要有空格,否则,会出现错误;可通过使用浏览器调试查看
调试时查看其语句就会变成如下:
出现的情况是join和表名连在一起了;
(2)选择项中,c.start_time是表示table1下的start_time字段,table1用c代替了,$this->_table是table2;i.name name 表示i.name 用name表示;
(3)%s 不能用单引号(即不能写在单引号里面)。
搜索
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: Yii的CActiveDataProvider查询方式小问题
- 下一篇:没有了