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 魔术函数使用说明
Feb 21 PHP
php正则表达式(regar expression)
Sep 10 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
详细分析PHP7与PHP5区别
Jun 26 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
COM in PHP (winows only)
2006/10/09 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
Symfony查询方法实例小结
2017/06/28 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
jquery foreach使用示例
2013/09/12 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
成人毕业生自我鉴定
2013/10/18 职场文书
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
上课迟到检讨书
2015/05/06 职场文书
小学英语教学随笔
2015/08/14 职场文书