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 图像尺寸调整代码
May 26 PHP
php实现的漂亮分页方法
Apr 17 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
php中count获取多维数组长度的方法
Nov 03 PHP
php自定义加密与解密程序实例
Dec 31 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
PHP实现获取中英文首字母
Jun 19 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
Oct 12 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
详解Vue之计算属性
2020/06/20 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
python读写二进制文件的方法
2015/05/09 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
工作岗位职责范本
2015/02/15 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python