>一般情况下建议采用model来操作MYSQL数据库
<br/>
## pk - 设置主键字段
~~~
use \api\Mysql;
Mysql::pk('id');
~~~
<br/>
## select - 设置查询字段
~~~
use \api\Mysql;
// 不传值则表示查询所有,即“*”
Mysql::select();
Mysql::select('id, name');
Mysql::select('COUNT(`id`) AS count');
// 支持数组
Mysql::select(['id', 'name']);
~~~
<br/>
## from - 设置操作的数据表
~~~
use \api\Mysql;
// 不需要写表前缀,表前缀应在Mysql.php中配置
Mysql::from('table');
// 第二个参数可以设置数据表别名
Mysql::from('table', 't');
~~~
<br/>
## where - 条件
~~~
use \api\Mysql;
// id等于1
Mysql::where([
'id' => 1
]);
// IN查询
Mysql::where([
'id IN' => [1,2,3,4,5]
]);
// NOT IN查询
Mysql::where([
'id NOT IN' => [1,2,3,4,5]
]);
// id大于10
Mysql::where([
'id >' => 10
]);
// id小于10
Mysql::where([
'id <' => 10
]);
// isnull
Mysql::where([
'id' => null
]);
// or
Mysql::where([
'id' => 1,
'OR state' => 1
]);
Mysql::where([
'id' => 1,
'OR id >' => 10
]);
Mysql::where([
'id' => 1,
'OR id IN' => [5,6,7]
]);
// like
Mysql::where([
'name LIKE' => '%eapi%'
]);
// 复杂查询可将值设置为FALSE,完全以KEY作为查询内容
Mysql::where([
'id' => 1,
'OR (id > 5 AND id < 10)' => FALSE
]);
~~~
<br/>
## order - 排序
~~~
use \api\Mysql;
Mysql::order('id DESC');
Mysql::order('id DESC,hit ASC');
// 多个排序字段也可以传入数据格式
Mysql::order([
'id' => 'DESC',
'addtime' => 'ASC'
]);
~~~
<br/>
## group - 分组
~~~
use \api\Mysql;
Mysql::group('sex');
~~~
<br/>
## limit - 条数
~~~
use \api\Mysql;
Mysql::limit(10);
// 10到20条
Mysql::limit(10, 10);
~~~
<br/>
## join - 关联
~~~
use \api\Mysql;
Mysql::join('table AS t', 't.id = x.id', 'LEFT');
~~~
<br/>
## one - 查询单条
~~~
$data = mysql('table', 't')->select()
->join('table_1 t1', 't.id = t1.id', 'LEFT')
->where([
't.id' => 1
])
->one();
~~~
<br/>
## all - 查询多条
~~~
$data = mysql('table', 't')->select()
->join('table_1 t1', 't.id = t1.id', 'LEFT')
->where([
't.id' => 1
])
->order('t.id DESC')
->limit(10)
->all();
~~~
<br/>
## add - 写入数据
~~~
// 返回插入数据的insertId
$id = mysql('table')->add([
'id' => 1,
'name' => 'test'
]);
// 批量写入,返回写入的条数
$data = [
[
'id' => 1,
'name' => 'test'
],
[
'id' => 1,
'name' => 'test'
],
[
'id' => 1,
'name' => 'test'
]
];
$num = mysql('table')->add($data, TRUE);
~~~
<br/>
## edit - 更新数据
~~~
// 返回影响的条数
$num = mysql('table')->where([
'id' => 1
])->edit([
'name' => 'new name'
]);
~~~
<br/>
## delete - 删除数据
~~~
// 返回影响的条数
$num = mysql('table')->where([
'id' => 1
])->delete();
~~~
<br/>
## query - 执行SQL语句
~~~
use \api\Mysql;
// SQL查多条
$data = Mysql::query('SELECT * FROM table')->all();
// SQL查单条
$data = Mysql::query('SELECT * FROM table limit 1')->one();
// 执行SQL语句
Mysql::query('INSERT INTO table (id) VALUES (1)');
~~~
<br/>
## lastSql - 获取最后执行的SQL语句
~~~
use \api\Mysql;
$sql = Mysql::lastSql();
~~~
<br/>
## 事务
~~~
use \api\Mysql;
// 开始事务
Mysql::startTrans();
// 执行语句,一定要放到try、catch中
try {
TbOne::insert([
'name' => 'eapi',
'age' => 35
]);
TbOne::insert([
'name' => 'eapi',
'age' => 36
]);
// 提交事务
Mysql::commit();
} catch(\Exception $exception){
// 如果SQL有异常则回滚事务
Mysql::rollback();
}
~~~