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 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
PHP实现多服务器session共享之NFS共享的方法
Mar 16 PHP
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
Linux下手动编译安装PHP扩展的例子分享
Jul 15 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
php实现读取内存顺序号
Mar 29 PHP
PHP加密解密类实例分析
Apr 20 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
Feb 10 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
PHP中命名空间的使用例子
Mar 22 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
Apr 07 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
深入浅析Yii admin的权限控制
2016/08/31 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
了解javascript中let和var及const关键字的区别
2019/05/24 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
Python中splitlines()方法的使用简介
2015/05/20 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
如何表示python中的相对路径
2020/07/08 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
英语生日邀请函
2014/01/23 职场文书
面试后感谢信
2014/02/01 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
法人授权委托书范本
2014/09/17 职场文书
创先争优承诺书
2015/01/20 职场文书
学习经验交流会总结
2015/11/02 职场文书
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python