thinkPHP5中的Db::name 和 dB::table 以及 db(‘’) 的区别

Db::name()

如果数据库中的表统一了表前缀,在application/database.php中的也写明prefix => ‘前缀_’ 就可以使用

1
2
Db::name('user')->where(['id'=>1])->select();
//数据库中的表名为 fa_user

Db::table()

使用这个必须指定完整的表名

1
2
Db::tale('fa_user')->where(['id'=>1])->select();
//数据库中的表名为 fa_user

db(‘’)

助手函数

1
2
db('user')->where(['id'=>1])->select();
//数据库中的表名为 fa_user

注意:该助手函数占用服务器资源
db(‘user’) 默认情况下,每次请求都会重新连接数据库,这样会占用服务器资源

方法1.如果不想每次都重连可以这样

1
db("user",[],false)

方法2.还可以直接改function,及则需要把

1
2
3
4
5
6
7
8
9
10
11
function db($name = '', $config = [], $force = true)
{
return Db::connect($config, $force)->name($name);
}

改成

function db($name = '', $config = [], $force = false)
{
return Db::connect($config, $force)->name($name);
}

ThinkPHP中query()和execute()区别

query()执行的是查询(select)的SQL语句。
execute()执行的是插入(insert)和修改(update)的SQL语句。execute()方法将返回影响的记录数。
如果在TP中使用query()来执行插入语句的话也会执行,而且也能插入成功,但是会报错。