think.php数据库,thinkphp5.1原生及Db操作数据库

本文详细介绍了PHP进行数据库操作的方法,包括配置数据库连接、执行原生SQL语句、添加、更新和删除数据,以及查询数据的各种方式,如按条件筛选、聚合函数等。示例代码涵盖了基本的数据库操作,适合PHP开发者参考。
摘要由CSDN通过智能技术生成

数据库操作

1.1、连接数据库

在应用配置目录或者模块配置目录下面的config/database.php中配置下面的数据库参数

8532740e1ba05bf1137e000d5e8cc559.png

a9aee3c09c1deb31e30a4dd053b1ed87.png

注:配置好的,一定要检查mysql服务是否开启,同时也要检查pdo是否打开。

同时还是创建好对应的数据库和连接数据库的用户名和密码并确保他们可以连接上你们的mysql服务器。

1.2、执行原生sql语句

Db类支持原生SQL查询操作

# 查询Db::query("select * from think_user where id=? AND status=?", [8, 1]);

# 添加、更新与删除Db::execute("update think_user set name=:name where status=:status", ['name' => 'thinkphp', 'status' => 1]);

15d69cc81e4352a96bce642cafb58f19.png

1.3、添加数据Db

# 添加一条数据$data = ['foo' => 'bar', 'bar' => 'foo'];

Db::name('user')->insert($data);

Db::name('user')->data($data)->insert();

db('user')->data($data)->insert();

# 添加数据后如果需要返回新增数据的自增主键$userId = Db::name('user')->insertGetId($data);

# 添加多条数据$data = [

['foo' => 'bar', 'bar' => 'foo'],

['foo' => 'bar1', 'bar' => 'foo1'],

['foo' => 'bar2', 'bar' => 'foo2']

];

Db::name('user')->insertAll($data);

db('user')->insertAll($data);

Db::name('user')->data($data)->insertAll();

添加一条

7f73089812b2e89c5163633756e2652a.png

添加多条

15d69cc81e4352a96bce642cafb58f19.png

1.4、更新数据

更新数据一定要写条件db('user')->where('id', 1)->update(['name' => 'thinkphp']);

db('user')->where('id', 1)->data(['name' => 'thinkphp'])->update();

Db::name('user')->update(['name' => 'thinkphp','id'=>1]);

# 5.1.7之后还支持了Db::raw写法Db::name('user')

->where('id', 1)

->update([

'name' => Db::raw('UPPER(name)'),

'score' => Db::raw('score-3'),

'read_time' => Db::raw('read_time+1')

]);

ce05e02020ec596531c6b09e47d2b8a8.png

1.5、删除数据

# 根据主键删除Db::table('think_user')->delete(1);

Db::table('think_user')->delete([1,2,3]);

# 条件删除Db::table('think_user')->where('id',1)->delete();

Db::table('think_user')->where('id','delete();

# 无条件删除所有数据 小心去用Db::name('user')->delete(true);

# 软删除数据 使用delete_time字段标记删除 逻辑删除

# 软删除,必须要表中要delete_time字段Db::name('user')

->where('id', 1)

->useSoftDelete('delete_time',time())

->delete();

f491f50970d279ba5d01df4461ac10d2.png

1.6、查询数据

# 查询一条数据db('user')->find(主键ID);

Db::name('user')->where('id',1)->find();

# 如果希望在没有找到数据后抛出异常可以使用Db::name('user')->where('id',1)->findOrFail();

# 查询多条记录Db::name('user')->where('status',1)->select();

# 如果希望在没有找到数据后抛出异常可以使用Db::name('user')->where('status',1)->selectOrFail();

# 查询某个字段的值可以用Db::name('user')->where('id',1)->value('name');

# 查询某一列的值可以用Db::name('user')->where('id',1)->column('name');

# 排序并获取指定记录条数Db::name('user')->order('id', 'desc')->limit(0,10)->select();

# 聚合查询Db::name('user')->count();

Db::name('user')->max('score');

Db::name('user')->where('score', '>', 0)->min('score');

Db::name('user')->avg('score');

Db::name('user')->where('id',10)->sum('score');

# 批量(字段)查询$map = [

['name', 'like', 'thinkphp%'],

['title', 'like', '%thinkphp'],

['id', '>', 0],

];

Db::table('think_user')

->where([ $map ])

->where('status',1)

->select();

SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' AND `title` LIKE '%thinkphp' AND `id` > 0 ) AND `status` = '1'

# 闭包查询$name = 'thinkphp';

$id = 10;

Db::table('think_user')->where(function ($query) use($name, $id) {

$query->where('name', $name)->whereOr('id', '>', $id);

})->select();

SELECT * FROM `think_user` WHERE ( `name` = 'thinkphp' OR `id` > 10 )

# 获取器 5.1.20之后才有Db::name('user')->withAttr('name', function($value, $data) {

return strtolower($value);

})->select();

上面的代码,查询的数据集数据中的name字段的值会统一进行小写转换

8d122b95dbb4f1a36c3e16c47216cdd9.png

2bb35ff47325297ee9a6da1023c54836.png

效果

675f9ecdeff7b268cf5347e520aee5fb.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值