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 遍历XP文件夹下所有文件
Nov 27 PHP
php 字符转义 注意事项
May 27 PHP
使用php实现截取指定长度
Aug 06 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
Feb 10 PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
Laravel下生成验证码的类
Nov 15 PHP
PHP微信企业号开发之回调模式开启与用法示例
Nov 25 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 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中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
Python完全新手教程
2007/02/08 Python
python实现apahce网站日志分析示例
2014/04/02 Python
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
联想中国官方商城:Lenovo China
2017/10/18 全球购物
如何实现jdbc性能优化
2012/07/30 面试题
教师通用专业自荐书范文
2014/02/11 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL