Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】


Posted in PHP onOctober 11, 2019

本文实例讲述了Thinkphp5.0框架的Db操作。分享给大家供大家参考,具体如下:

连接操作:

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
class Index extends Controller
{
  public function study_db(){
    //方式一:默认读取配置文件的配置
    $res = Db::connect();
    //方式二:手动配置,使用一个数组
    $res = Db::connect([
      'type'      => 'mysql',
      'hostname'    => '127.0.0.1',
      'database'    => 'bodywork3',
      'username'    => 'root',
      'password'    => '666',
      'hostport'    => '3306',
      'charset'     => 'utf8'
    ]);
    //方式三:手动配置,使用一个字符串
    $res = Db::connect("mysql://root:password@127.0.0.1:3306/database_name#utf8");
    //方式四:手动配置,使用一个字符串
    //这种方式,需要在config配置文件中有tp_db_config数组配置
   $res = Db::connect("tp_db_config");
  }
}

查询sql:

$data = Db::query("select * from user");
    dump($data);
   $data = Db::table('user')->select();
   $data = Db::table('user')->find();
  //获取一条记录的某个字段值
    $name = Db::table('user')->where(['id']=>5)->value('name');
    //获取一列值
    $all_name = Db::table('user')->column('name');
    //获取一列值,第二个参数作为索引
    $all_name = Db::table('user')->column('name','id');
    //注意:
    //select和column获取不到数据时返回空数组。 
    //find和value获取不到数据时返回null。
    $data = db('user')->select();//每次会实例化类
    $data = db('user',[],false)->select();//每次不会实例化类
//表名字,使用table    
$data = Db::table('prefix_user')->select();
//表名字,使用name
$data = Db::name('user')->select();  
//使用table()时需要带上表前缀,
//使用name()时不需要表前缀,

添加sql:

//执行sql语句添加数据
Db::execute("insert into user values (1,'name',10)");
//,返回影响的行数
$res = Db::name('user')->insert([
  'name' => 'hello',
  'age' => 10
]);
//insertGetId()方法可以在添加数据后返回数据的id
$id = Db::name('user')->insertGetId([
  'name' => 'hello',
  'age' => 10
]);
//添加多个数据,返回影响的行数
$res= Db::name('user')->insertAll([
  ['name' => 'hello','age' => 10],
  ['name' => 'world','age' => 12],
]);

更新sql:

//更新多个字段
    $res = Db::name('user')-where(['id'=>1])->update([
      'username' => 'zhang san',
      'age' => '6'
    ]);
    //更新一个字段
    $res = Db::name('user')-where(['id'=>1])->setField('username','zhang san');
    //自增、自减
    $res = Db::name('user')-where(['id'=>1])->setInc('score');
    $res = Db::name('user')-where(['id'=>1])->setDec('score');
    $res = Db::name('user')-where(['id'=>1])->setInc('score',2);

删除sql:

//删除一条记录
$res = Db::name('user')->where(['id'=>1])->delete();
//如果where条件是主键,可以这样写
$res = Db::name('user')->delete(1);

查询构造器:

//打印sql,where值为数组
    $sql = Db::name('user')->where(['id'=>1])->buildSql();
    dump($sql);
    //结果:SELECT * FROM `user` WHERE `id` = 1
    //打印sql,where值为两个参数
    $sql2 = Db::name('user')->where('id',1)->buildSql();
    dump($sql2);
    //结果:SELECT * FROM `user` WHERE `id` = 1
    //打印sql,where值为三个参数
    $sql3 = Db::name('user')->where('id','=',1)->buildSql();
    dump($sql3);
    //结果:SELECT * FROM `user` WHERE `id` = 1
    //打印sql,where多条件
    $sql4 = Db::name('user')->where([
      'id' => ['in',[1,2,3,4,5]],
      'age' => ['gt',10]
    ])->buildSql();
    dump($sql4);
    //结果:SELECT * FROM `user` WHERE `id` IN (1,2,3,4,5) AND `age` > 10
    //使用EXP表达式
    $sql5 = Db::name('user')->where('id','EXP','not in (2,5)')->buildSql();
    dump($sql5);
    //结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) )
    //可以使用连续的where条件
    $sql6 = Db::name('user')
      ->where('id','EXP','not in (2,5)')
      ->where('age','>',10)
      ->buildSql();
    dump($sql6);
    //结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) ) AND `age` > 10
    //如果多个where条件是or关系,使用whereOr
    $sql7 = Db::name('user')
      ->where('id','EXP','not in (2,5)')
      ->whereOr('age','>',10)
      ->buildSql();
    dump($sql7);
    //结果:SELECT * FROM `bw_user` WHERE ( `id` not in (2,5) ) OR `age` > 10

链式操作:

//链式操作,常用方法
    $data = Db::name('user')
      ->where(['id','>',10])
      ->field('id,name,age')
      ->order('addtime desc')
      ->limit('10,5')
//      ->page('3,5') //limit((page-1)*5,5)
//      ->group('course')
      ->select();
    dump($data);

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php 随机生成10位字符代码
Mar 26 PHP
php self,$this,const,static,-&amp;gt;的使用
Oct 22 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 PHP
PHP二维数组去重算法
Dec 17 PHP
php 算法之实现相对路径的实例
Oct 17 PHP
实例讲解PHP中使用命名空间
Jan 27 PHP
laravel添加前台跳转成功页面示例
Oct 22 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 PHP
详解php中流行的rpc框架
May 29 PHP
PHP实现单条sql执行多个数据的insert语句方法
Oct 11 #PHP
laravel 中某一字段自增、自减的例子
Oct 11 #PHP
laravel框架的安装与路由实例分析
Oct 11 #PHP
php5与php7的区别点总结
Oct 11 #PHP
laravel 关联关系遍历数组的例子
Oct 10 #PHP
laravel请求参数校验方法
Oct 10 #PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 #PHP
You might like
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
python redis 删除key脚本的实例
2019/02/19 Python
python自动化之Ansible的安装教程
2019/06/13 Python
安装PyInstaller失败问题解决
2019/12/14 Python
tensorflow自定义激活函数实例
2020/02/04 Python
Python requests及aiohttp速度对比代码实例
2020/07/16 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
印度网上药店:1mg
2017/10/13 全球购物
临床医学应届生求职信
2013/11/06 职场文书
中专毕业生自我鉴定范文
2013/11/09 职场文书
物业管理专业个人的自我评价
2013/11/19 职场文书
书法社团活动总结
2015/05/07 职场文书
同事欢送会致辞
2015/07/31 职场文书
合理化建议书范文
2015/09/14 职场文书
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电