为了账号安全,请及时绑定邮箱和手机立即绑定

thinkphp5.0学习-数据库的操作

标签:
PHP

ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。采用PDO方式,目前包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。

1.基本使用

配置了数据库连接信息后,我们就可以直接使用数据库运行原生SQL操作了,支持query(查询操作)和execute(写入操作)方法,并且支持参数绑定。

public function read()
{
    $sql = Db::query('select * from news');
    dump($sql);   

}

execute方法:

public function read()
{
    $sql = Db::execute('insert into news (nid, rid) values (11, 11)');;
    dump($sql);
}

数据库添加成功!

也支持命名占位符绑定,例如:

public function read()
{
    $sql = Db::query('select * from news where nid=:nid',['nid'=>1]);
    dump($sql);
}

execute方法:

public function read()
{
    $sql = Db::execute('insert into news (nid, rid) values (:nid, :rid)',['nid'=>18,'rid'=>'121']);
    dump($sql);
}

2.查询构造器
听名字就知道,很装X..
先来看基本查询;
查询一个数据:

 // table方法必须指定完整的数据表名
    $sql =Db::table('news')->where('nid',1)->find();
    dump($sql);

find = 查询一条;并且查询结果不存在,返回 null
Db::table('think_user')->where('status',1)->select();
这条查询语句与上面同效,但是select 方法查询结果不存在,返回空数组

额 这个玩意叫查询数据集,没错!

默认情况下,find和select方法返回的都是数组。

如果你要查询某个字段的值,咋整?

public function read()
{
// 返回某个字段的值
$sql =Db::table('news')->where('nid',18)->value('rid');
dump($sql);
}

如果你需要处理成千上百条数据库记录,可以考虑使用chunk方法,该方法一次获取结果集的一小块,然后填充每一小块数据到要处理的闭包,该方法在编写处理大量数据库记录的时候非常有用。

public function read()
{
    $sql =Db::table('news')->chunk(1,function($user){
        foreach($user as $u)
        {
dump($u);
        }
    });

}

这个样子 就可以一条一条都给遍历出来了!
是“一条一条·”,嘿!
3.添加数据跟删除数据

使用 Db 类的 insert 方法向数据库提交数据

public function read()
{
$data = ['ntitle' => '123', 'rid' => '456'];
$sql = Db::table('news')->insert($data);

dump($sql);
}

添加成功后insert 方法返回添加成功的条数,insert 正常情况返回 1

添加数据后如果需要返回新增数据的自增主键,可以使用getLastInsID方法:

public function read()
{
$data = ['ntitle' => '123', 'rid' => '345'];
$sql = Db::table('news')->insert($data);
$userId = Db::name('news')->getLastInsID('nid');
dump($userId);
dump($sql);
}

添加多条数据:

添加多条数据直接向 Db 类的 insertAll 方法传入需要添加的数据即可;

public function read()
{
$data = [
['ntitle' =>'gaga','rid' => '12'],
['ntitle' =>'gaaaga','rid' => '123']
];
$sql = Db::table('news')->insertAll($data);

dump($sql);
}

4.查询方法:

where方法:

可以使用where方法进行AND条件查询:

public function read()
{
$sql = Db::table('news')
->where('nid',20)
->where('ntitle',123)
->find();
dump($sql);
}

whereOr方法:

使用whereOr方法进行OR查询:

public function read()
{
$sql = Db::table('news')
->where('nid',20)
->whereOr('ntitle','like','%123%')
->find();
dump($sql);
}
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消