前言[随时更新]
MySQL快速复习
MySQL原生查询
选择数据表
删除数据
聚合查询
时间查询
视图查询
子查询
总结/参考
注意:这是函数,不是方法,没有定义在某个类文件中
if (!function_exists('db')) {
/**
* 实例化数据库类
* @param string $name 操作的数据表名称(不含前缀)
* @param array|string $config 数据库配置参数
* @param bool $force 是否强制重新连接
* @return \think\db\Query
*/
function db($name = '', $config = [], $force = true)
{
return Db::connect($config, $force)->name($name);
}
}
db('staff');
实例:(省略前缀的表名)选择tp5_staff表,查询id等于1003的数据:
<?php
namespace app\index\controller;
class Index {
public function index(){
//使用db助手函数选择表,并输出查询结果
dump(db('staff')->find('1003'));
}
}
array(7) {
["id"] => int(1003)
["name"] => string(6) "杨过"
["sex"] => int(0)
["age"] => int(35)
["salary"] => float(5303)
["dept"] => string(9) "市场部"
["hiredate"] => string(10) "2014-09-22"
}
- db()助手函数选择数据表,与name方法完全一样,可替代name方法;
- 不可以跨库操作,即不可指定数据库前缀;
- 不可以设置表别名(因为当前表名不简称);
- 隐藏了太多的操作细节,不利于了解框架的运行流程,容易让初学者产生误解。
注意:使用db助手函数默认每次都会重新连接数据库,而使用 Db::name 或者 Db::table 方法的话都 是单例的。db函数如果需要采用相同的链接,可以传入第三个参数,例如:
db('user',[],false)->where('id',1)->find();
db('user',[],false)->where('status',1)->select();
上面的方式会使用同一个数据库连接,第二个参数为数据库的连接参数,留空表示采用数据库配置文件的 配置。