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的header和asp中的redirect比较
Oct 09 PHP
php 多个submit提交表单 处理方法
Jul 07 PHP
允许phpmyadmin空密码登录的配置方法
May 29 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
destoon实现调用热门关键字的方法
Jul 15 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
在 Laravel 项目中使用 webpack-encore的方法
Jul 21 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 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连接Oracle for NT 远程数据库
2006/10/09 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
深入浅出php socket编程
2015/05/13 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
Python中获取网页状态码的两个方法
2014/11/03 Python
python logging模块的使用总结
2019/07/09 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
python 负数取模运算实例
2020/06/03 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
python跨文件使用全局变量的实现
2020/11/17 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
财务会计毕业生个人求职信
2014/02/03 职场文书
四年级小学生评语
2014/12/26 职场文书
实习协议书
2015/01/27 职场文书
矛盾论读书笔记
2015/06/29 职场文书
小学课改工作总结
2015/08/13 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
创业计划书之家政服务
2019/09/18 职场文书