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 相关文章推荐
PHPShop存在多个安全漏洞
Oct 09 PHP
phpfans留言版用到的install.php
Jan 04 PHP
PHP加速 eAccelerator配置和使用指南
Jun 05 PHP
php运行出现Call to undefined function curl_init()的解决方法
Nov 02 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
Mar 19 PHP
php实现的RSS生成类实例
Apr 23 PHP
试用php中oci8扩展
Jun 18 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
laravel实现按月或天或小时统计mysql数据的方法
Oct 09 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微信公众号开发之现金红包
2018/04/16 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
Python对象属性自动更新操作示例
2018/06/15 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
使用python计算三角形的斜边例子
2020/04/15 Python
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
酒店销售经理岗位职责
2014/01/31 职场文书
教师对学生的寄语
2014/04/03 职场文书
大班开学家长寄语
2014/04/04 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
Python中文纠错的简单实现
2021/07/07 Python