>[danger] 框架数据模型是基于 PDO 驱动的,记得要开启PHP的PDO支持
基于数据模型的操作在使用【**数组传参**】时全部都是通过 参数绑定 来实现的
所以大家应尽量使用数组传参的方式,避免直接执行SQL语句带来的隐患
## 实例化数据模型
**1. D( ) 函数**
D('user') 函数直接实例化数据模型,参数 user 是将要操作的数据表名(省略前缀,前缀可在配置文件自定义)
user 参数可省略,后续操作时可以使用 table('user') 函数来指定
$m = D('user');
$m = D()->table('user');
**2. M( ) 函数**
M('user')函数 作用是实例化用户的自定义模型 user.class.php
user 对应用户模型的**文件名**以及**类名**和**数据表名**
用户自定义模型的存放目录是:应用目录/model/ 或者是 根目录下的 common/model/
优先使用 应用目录下的模型文件,不存在时会到common目录下查找
如果都不存在 将直接实例化数据模型,也就是等同于D( )函数
$m = M('user');
## 切换数据表
$m = D('user');
...数据操作;
$m->table('cart')... //切换到 cart 表进行其它数据操作
## 设置表别名
在指定表名之后紧跟着使用 ->alias('name') 来指定该数据表的别名:
$m = D();
$m->table('user')->alias('a');
$m = D('user')->alias('u');
## 获取错误信息
$m = D('user');
...数据操作
$err = $m->getError();
## 获取最后执行的SQL语句 及 所绑定的参数
$m = D('user');
...数据操作
$sql = $m->getSql(); //最后执行的sql语句
$args = $m->getArgs(); //最后执行的sql语句所绑定的参数
## 连贯操作
数据模型的操作可以使用 -> 操作符依次调用多个方法,例如:
$m = D('user');
$field = ['id','name','age'];
$where = ['id >'=>0];
$user = $m->field($field)->where($where)->limit(20)->select();
## 直接执行SQL语句
**1. 查询数据**
$m = D();
$sql = 'SELECT * FROM `zphp_user`';
$user = $m->queryOne($sql); //只取一条数据
$list = $m->queryAll($sql); //取出所有数据
**2. 写入数据**
如果是插入数据将返回插入数据的主键值,没有主键时返回 true
如果是更新数据将返回受影响的数据行数
$m = D();
$result = $m->submit($sql);
## 获取所有数据表名
$m = D();
$tables = $m->getTables();
## 获取表的所有字段
$m = D('user');
$fields = $m->getFields();
## 直接使用PDO对象
$db = \z\db::db(); //返回的 PDO 对象
$sql = 'SELECT * FROM `zphp_user`';
$sth = $db->query($sql);
$list = $sth->fetchAll();