phpGrace Db 概述

    1. phpgrace db 操作类以pdo为基础、全面采用预处理机制、最大程度保证了数据操作的安全性。采用了单利模式,保证一库一连、一表一对象!为高效开发提供了基础。
    2. 大部分的数据操作都无需编写复杂的sql命令,简单配置即可。

    准备工作:数据库信息配置使用数据库操作前,请打开保证数据库配置正确!具体操作见上一节 ^_^

    数据操作详解下文将以数据表 persons为例,数据结构 :

    |字段|类型|长度|作用
    |id|int|10|主键自动增加
    |name|vachar|20|姓名
    |age|int|4|年龄
    |addtime|int|11|添加时间
    |classid|int|10|班级id 索引

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

    1. <?php
    2. class indexController extends grace{
    3. public $tableName = 'persons';
    4. public function index(){
    5. $addData = array('name' => 'grace', 'age' => mt_rand(10, 200));
    6. $personId = $this->db->add($addData);
    7. if($personId){
    8. echo '写入数据成功,主键:'.$personId;
    9. echo '<br />'.$this->db->getSql();
    10. }else{
    11. echo '<br />'.$this->db->error();
    12. }
    13. }
    14. }

    获取最近一次执行的操作命令 getSql()功能:获取最近一次执行的操作命令参数:无返回:最近一次执行的操作命令设置条件 where($where, $whereData)功能:设置sql条件(预处理机制)参数:1、条件(使用 ? 作为展位符)2、条件占位符对应的数值(数组格式)删除数据 delete()功能:删除一条或者多条符合条件的数据参数:无返回:true / false

    1. <?php
    2. class indexController extends grace{
    3. public $tableName = 'persons';
    4. public function index(){
    5. $this->db->where('id = ?', array(1))->delete();
    6. }
    7. }

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

    1. <?php
    2. class indexController extends grace{
    3. public $tableName = 'persons';
    4. public function index(){
    5. $data = array('name' => 'phpGrace');
    6. $this->db->where('id = ?', array(2))->update($data);
    7. }
    8. }

    对指定的字段进行递加或递减 field()参数:1、字段名称 2、递加值 (正数递加,负数递减)

    1. <?php
    2. class indexController extends grace{
    3. public $tableName = 'persons';
    4. public function index(){
    5. $this->db->where('id = ?', array(2))->field('age', 1);
    6. }
    7. }

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

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

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

    1. <?php
    2. class indexController extends grace{
    3. public $tableName = 'persons';
    4. public function index(){
    5. $data = $this->db->fetchAll();
    6. p($data);
    7. }
    8. }

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

    1. $data = $this->db->order('id desc')->fetchAll();

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

    1. $data = $this->db->order('id desc')->limit(0, 10)->fetchAll();

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

    1. $res = $this->db->query('delete from persons where id = ?', array(2));
    2. print_r($res);

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

    1. $this->db->query('select * from persons where id > ?', array(1));
    2. $arr = $this->db->queryFetchAll();
    3. print_r($arr);

    使用join() 完成多表联合参数:联合语句示例表 classes 表结构

    |字段|类型|长度
    |id|int|10
    |class_name|varchar|20

    1. <?php
    2. class indexController extends grace{
    3. public $tableName = 'persons';
    4. public function index(){
    5. $arr = $this->db->join('as a left join '.sc('db','pre').'classes as b on a.classid = b.id')->fetchAll('a.*, b.class_name');
    6. print_r($arr);
    7. }
    8. }

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

    1. <?php
    2. $arr = $this->db->page(1)->fetchAll();
    3. print_r($arr);

    获取sql错误方法 error()

    1. echo $this->db->error();

    获取原生的pdo操作对象 getDb()

    1. $pdo = $this->db->getDb();
    2. var_dump($pdo);

    计算数据条目总数 count()

    1. $count = $this->db->count();
    2. echo $count;

    指定字段的数据最大值 max(字段)

    1. $max = $this->db->max('age');
    2. echo $max;

    指定字段的数据最小值 min(字段)

    1. $min = $this->db->min('age');
    2. echo $min;

    指定字段的数据平均值 avg(字段)

    1. $avg = $this->db->avg('age');
    2. echo $avg;

    指定字段的数据总和 sum(字段)

    1. $sum = $this->db->sum('age');
    2. echo $sum;

    获取写入数据的主键值 lastInsertId()

    1. $res = $this->db->add(array('name' => 'grace', 'age' => 18, 'addtime' => 10585888, 'classid' => 1));
    2. echo $this->db->lastInsertId();

    获取操作影响的数据条目数 rowCount()

    1. $res = $this->db->where('id < ?', array(2))->delete();
    2. echo $this->db->rowCount();

    group by

    1. //原始语句
    2. select count('a.*'), b.class_name from persons as a left join classes as b on a.classid = b.id group by a.classid ;
    3. //代码实现:
    4. $res = $this->db
    5. ->join('as a left join '.sc('db', 'pre').'classes as b on a.classid = b.id')
    6. ->group('a.classid')
    7. ->fetchAll("count('a.*') as total, b.class_name");
    8. echo $this->db->getSql().'--';
    9. print_r($res);

    获取mysql版本 mysqlV()

    1. echo $this->db->mysqlV();

    表结构分析

    1. $res = $this->db->desc();
    2. print_r($res);

    原文: http://www.phpgrace.com/doc/info/302-2.html