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分页显示制作详细讲解
Dec 05 PHP
mysql时区问题
Mar 26 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
Mar 21 PHP
php去除重复字的实现代码
Sep 16 PHP
PHP运行模式的深入理解
Jun 03 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
学习php设计模式 php实现备忘录模式(Memento)
Dec 09 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
Symfony的安装和配置方法
Mar 17 PHP
PHP实现的方程求解示例分析
Nov 11 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 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
计算一段日期内的周末天数的php代码(星期六,星期日总和)
2009/11/12 PHP
php+javascript的日历控件
2009/11/19 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
php把session写入数据库示例
2014/02/26 PHP
PHP解决中文乱码
2017/04/28 PHP
offsetParent 算法分析
2010/04/05 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
jquery常用操作小结
2014/07/21 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
智利最大的网上商店:Linio智利
2016/11/24 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
查询优化的一般准则有哪些
2015/03/08 面试题
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
融资租赁计划书
2014/04/29 职场文书
2014年消防工作总结
2014/11/21 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
护士自我推荐信范文
2015/03/24 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
高中历史教学反思
2016/02/19 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
element多个表单校验的实现
2021/05/27 Javascript
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript