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 相关文章推荐
dedecms中显示数字验证码的修改方法
Mar 21 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
PHP程序员基本要求和必备技能
May 09 PHP
php中数字0和空值的区别分析
Jun 05 PHP
PHP Session机制简介及用法
Aug 19 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
Apr 17 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
PHP定义字符串的四种方式详解
Feb 06 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
重置版战役片段
2020/04/09 魔兽争霸
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
JSON取值前判断
2014/12/23 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Django进阶之CSRF的解决
2018/08/01 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
如何定义TensorFlow输入节点
2020/01/23 Python
Django数据库操作之save与update的使用
2020/04/01 Python
python实现一个猜拳游戏
2020/04/05 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
Python实现上下文管理器的方法
2020/08/07 Python
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
IRO美国官网:法国服装品牌
2018/03/06 全球购物
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
个人买房协议书范本
2014/10/06 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
校园安全教育心得体会
2016/01/15 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript
python实现简易自习室座位预约系统
2021/06/30 Python