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 24 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
解析php mysql 事务处理回滚操作(附实例)
Aug 05 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
php中count获取多维数组长度的方法
Nov 03 PHP
PHP学习笔记(二):变量详解
Apr 17 PHP
PHP加密解密类实例分析
Apr 20 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 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/08/07 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
php读取csc文件并输出
2015/05/21 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
vue实现tab栏点击高亮效果
2020/08/19 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python实现把xml或xsl转换为html格式
2015/04/08 Python
Python解析树及树的遍历
2016/02/03 Python
Python时间获取及转换知识汇总
2017/01/11 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
绩效工资实施方案
2014/03/15 职场文书
岗位职责说明书模板
2014/07/30 职场文书
企业领导对照检查材料
2014/08/20 职场文书