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实现采集程序原理和简单示例代码
Mar 18 PHP
PHP初学者最感迷茫的问题小结
Mar 27 PHP
CURL的学习和应用(附多线程实现)
Jun 03 PHP
PHP系统命令函数使用分析
Jul 05 PHP
destoon实现调用热门关键字的方法
Jul 15 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 PHP
Symfony2函数用法实例分析
Mar 18 PHP
PHP环境搭建的详细步骤
Jun 30 PHP
php使用crypt()函数进行加密
Jun 08 PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 PHP
JS中彻底删除JSON对象组成的数组中的元素
Sep 22 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
神族 PROTOSS 概述
2020/03/14 星际争霸
用php实现像JSP,ASP里Application那样的全局变量
2007/01/12 PHP
PHP学习之字符串比较和查找
2011/04/17 PHP
php计算十二星座的函数代码
2012/08/21 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
Python open读写文件实现脚本
2008/09/06 Python
Python解释执行原理分析
2014/08/22 Python
python编程线性回归代码示例
2017/12/07 Python
Python实现简易Web爬虫详解
2018/01/03 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
详解Django配置JWT认证方式
2020/05/09 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
python爬取微博评论的实例讲解
2021/01/15 Python
消防应急演练方案
2014/02/12 职场文书
干部下基层实施方案
2014/03/14 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
Python基础详解之邮件处理
2021/04/28 Python
Nginx源码编译安装过程记录
2021/11/17 Servers