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-1DB::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-2DB::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字段,table1c代替了,$this->_tabletable2i.name  name 表示i.name name表示;

(3)%s 不能用单引号(即不能写在单引号里面)。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值