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项目打包方法
Feb 18 PHP
PHP简单系统查询模块代码打包下载
Jun 07 PHP
又一个php 分页类实现代码
Dec 03 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
Feb 09 PHP
Look And Say 序列php实现代码
May 22 PHP
PHP字符串长度计算 - strlen()函数使用介绍
Oct 15 PHP
php设置session值和cookies的学习示例
Mar 21 PHP
PHP中使用smarty生成静态文件的例子
Apr 24 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
php防止用户重复提交表单
Nov 02 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
Nov 04 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 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获取后台Job管理的实现代码
2011/06/10 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
Python 元类使用说明
2009/12/18 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
python中 logging的使用详解
2017/10/25 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
Python List cmp()知识点总结
2019/02/18 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
应聘护士自荐信
2013/10/21 职场文书
英文商务邀请信
2014/01/22 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
十佳护士先进事迹
2014/05/08 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
分享3个非常实用的 Python 模块
2022/03/03 Python