首页 课程中心 读书 公众号框架 HUI H.JS 开放源 登录 & 注册
 数据库操作类

hcDb 概述
hcWeChat 集成了优秀的数据库操作类,以pdo为基础、全面采用预处理机制、最大程度保证了数据操作的安全性。
hcDb 采用了单利模式,保证一库一连,为高效开发提供了基础。
hcDb 统一使用 hcm()方法获取数据操作模型,既方便又高效。
hcDb 完成大部分的数据操作都无需编写复杂的sql命令,简单配置即可。

准备工作:数据库信息配置
使用数据库操作前,请打开 hcWeChat.php 完成数据库配置:

//Mysql 数据库配置
define('HCWT_DB_HOST',    'xxx'); //数据库地址
define('HCWT_DB_USER',    'xxx'); //数据库账户
define('HCWT_DB_PWD',     'xxx'); //数据库密码
define('HCWT_DB_NAME',    'xxx'); //数据库名称
define('HCWT_DB_PRE',     'xxx');  //数据表前缀
define('HCWT_DB_CHARSET', 'utf8'); //字符集


获取对应数据表的操作对象
使用hcm('表名称');函数可以精准的获取针对某个数据表的操作对象;

$personModel = hcm('persons');


增加数据 add($data)
功能:向数据表内写入数据。
参数:数值形式的数据对象(键名称对应数据表的字段名)
返回:写入数据对应的主键数据值

$addData  = array('name' => '测试'.mt_rand(111, 999), 'age' => mt_rand(10, 200));
$personId = $personModel->add($addData);
if($personId){
    echo '写入数据成功,主键:'.$personId;
    echo '<br />'.$personModel->getSql();
}


获取最近一次执行的操作命令 getSql()
功能:获取最近一次执行的操作命令
参数:无
返回:最近一次执行的操作命令

删除数据 delete()
功能:删除一条或者多条符合条件的数据
参数:无
返回:true / false

$personModel->where('id = ?', array(1))->delete();


设置条件 where($where, $whereData)
功能:设置sql条件(预处理机制)
参数:1、条件(使用 ? 作为展位符) 2、条件对应的数值(数组格式)

更新数据 update()
功能:更新符合条件的数据
参数:更新数据(键名称对应数据表的字段名)

$uper = array('name' => 'hc..');
$personModel->where('id = ?', array(2))->update($uper);


获取单条数据 fetch()
功能:获取单条数据
参数:查询字段(可省参数,默认 *)
返回:查询成功返回数组形式的数据,失败返回空(可以使用empty函数判断)
说明:可以配合条件进行查询

$arr = $personModel->where('id = ?', array(2))->fetch();
print_r($arr);


获取多条数据 fetchAll()
功能:获取单条数据
参数:查询字段(可省参数,默认 *)
返回:查询成功返回数组形式的数据,失败返回空(可以使用empty函数判断)
说明:可以配合条件、排序、分页等方法进行查询

$arr = $personModel->fetchAll();
print_r($arr);


查询排序 order()
功能:设置排序规则
参数:排序规则

$arr = $personModel->order('id desc')->fetchAll();
print_r($arr);


查询数据截取 limit($start, $num)
功能:设置limit,截取数据
参数:1、起始位置, 2、数据条目数

$arr = $personModel->order('id desc')->limit(0,2)->fetchAll();
print_r($arr);


执行自定义的sql命令 query($sql, $execute)
参数:1、sql命令(如果有条件推荐使用展位符 ?), 2、占位符对应的数据(可省参数,sql命令包含占位符时传递)

$res = $personModel->query('delete from hcwt_persons where id = ?', array(3));
print_r($res);


queryFetch 和 queryFetchAll()
功能:使用query()函数查询数据时后续的查询函数,queryFetch() 用于单条数据,queryFetchAll()用于多条数据。
参数:无
返回:对应的数据(数组形式)

$personModel->query('select * from hcwt_persons where id > ?', array(1));
$arr = $personModel->queryFetchAll();
print_r($arr);


使用join() 完成多表联合
参数:联合语句

$arr =  $personModel->join('as a left join '.HCWT_DB_PRE.'classes as b on a.class = b.class_id')->fetchAll('a.*, b.class_name');
print_r($arr);


使用page()函数完成分页
参数:每页数据条目数(可省参数,默认 10条)
返回:数组格式的查询数据
格式:array(数据, 分页信息)

<?php
include 'hcWeChat/hcWeChat.php';
$personModel = hcm('persons');
//获取单条数据
$arr =  $personModel->join('as a left join '.HCWT_DB_PRE.'classes as b on a.class = b.class_id')->page(2)->fetchAll('a.*, b.class_name');
foreach($arr[0] as $rows){
    echo '<div>'.$rows['name'].'</div>';    
}
echo $arr[1]->firstPage();
echo $arr[1]->prePage();
echo $arr[1]->listPage();
echo $arr[1]->nextPage();
echo $arr[1]->lastPage();


其他常用方法
获取sql错误方法 error()
获取原生的pdo操作对象 getDb()
计算数据条目总数 count()
指定字段的数据最大值 max(字段)
指定字段的数据最小值 min(字段)
指定字段的数据平均值 avg(字段)
指定字段的数据总和 sum(字段)
获取写入数据的主键值 lastInsertId()
获取操作影响的数据条目数 rowCount()
获取mysql版本 mysqlV()