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 相关文章推荐
header()函数使用说明
Nov 23 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
openflashchart 2.0 简单案例php版
May 21 PHP
PHP连接Access数据库的方法小结
Jun 20 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
通过php添加xml文档内容的方法
Jan 23 PHP
PHP数组操作类实例
Jul 11 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
Dec 10 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
php动态变量定义及使用
2015/06/10 PHP
twig模板获取全局变量的方法
2016/02/05 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
微信小程序 页面跳转传值实现代码
2017/07/27 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
js实现小星星游戏
2020/03/23 Javascript
python编写简单爬虫资料汇总
2016/03/22 Python
Python可变参数用法实例分析
2017/04/02 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python调用摄像头拍摄数据集
2019/06/01 Python
python中matplotlib条件背景颜色的实现
2019/09/02 Python
python连接mongodb集群方法详解
2020/02/13 Python
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
介绍一下Java中标识符的命名规则
2014/02/03 面试题
2015年保洁员工作总结
2015/05/04 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书