ThinkPHP6之数据库操作下

  • 前言
  • 一,查询表达式
    • 1.1 where
    • 1.2table和name
    • 1.3field
    • 1.4limit
    • 1.5page
    • 1.6 order
  • 二, 聚合查询
  • 三,分页查询
  • 总结

前言

数据库操作除了增,删,查,改,这四个基本操作外,还有一些细节东西处理,记住这句话,了解对应的链式操作用链式操作,不懂链式操作直接使用query()和excute()


一,查询表达式

在进行查询表达式之前做如下两件事:

  1. 添加sql语句
CREATE TABLE `shop_admin` (`uid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',`account` varchar(50) NOT NULL COMMENT '账户',`password` char(32) NOT NULL COMMENT '密码',`name` varchar(50) NOT NULL COMMENT '姓名',`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭',`add_time` int(10) unsigned NOT NULL COMMENT '添加时间',PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='后台管理员';INSERT INTO `shop_admin` VALUES (1, 'ouyangke', 'e10adc3949ba59abbe56e057f20f883e', 'yk', 1, 1576080000);DROP TABLE IF EXISTS `shop_cat`;
CREATE TABLE `shop_cat` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',`name` varchar(50) NOT NULL COMMENT '分类名',`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭',PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='分类表';INSERT INTO `shop_cat` VALUES (1, '女装', 1);
INSERT INTO `shop_cat` VALUES (2, '男装', 1);
INSERT INTO `shop_cat` VALUES (3, '孕产', 1);
INSERT INTO `shop_cat` VALUES (4, '童装', 1);
INSERT INTO `shop_cat` VALUES (5, '电视', 1);
INSERT INTO `shop_cat` VALUES (6, '手机', 1);
INSERT INTO `shop_cat` VALUES (7, '电脑', 1);CREATE TABLE `shop_goods` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ' 商品ID',`cat` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '分类ID',`title` varchar(200) NOT NULL COMMENT '商品标题',`price` double(10,2) unsigned NOT NULL COMMENT '价格',`discount` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '折扣',`stock` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '库存',`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭 3删除',`add_time` int(10) unsigned NOT NULL COMMENT '添加时间',PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COMMENT='商品表';INSERT INTO `shop_goods` VALUES (1, 1, '云朵般轻盈的仙女裙 高级钉珠收腰长裙 气质无袖连衣裙', 279.99, 0, 1100, 1, 1576080000);
INSERT INTO `shop_goods` VALUES (2, 1, '高冷御姐风灯芯绒a字连衣裙女秋冬2019年新款收腰显瘦复古裙子', 255.90, 0, 100, 1, 1576080000);CREATE TABLE `shop_menu` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',`title` varchar(50) NOT NULL COMMENT '菜单名',`fid` int(10) NOT NULL COMMENT '父ID',`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭',PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COMMENT='左侧菜单表';INSERT INTO `shop_menu` VALUES (1, '商品管理', 0, 1);
INSERT INTO `shop_menu` VALUES (2, '商品列表', 1, 1);
INSERT INTO `shop_menu` VALUES (3, '商品分类', 1, 1);
INSERT INTO `shop_menu` VALUES (4, '用户管理', 0, 1);
INSERT INTO `shop_menu` VALUES (5, '用户列表', 4, 1);
INSERT INTO `shop_menu` VALUES (6, '购物车', 4, 1);
INSERT INTO `shop_menu` VALUES (7, '用户地址', 4, 1);
INSERT INTO `shop_menu` VALUES (8, '订单管理', 4, 1);
INSERT INTO `shop_menu` VALUES (9, '后台管理', 0, 1);
INSERT INTO `shop_menu` VALUES (10, '管理员列表', 9, 1);
INSERT INTO `shop_menu` VALUES (11, '个人中心', 9, 1);
INSERT INTO `shop_menu` VALUES (12, '左侧菜单', 9, 1);
  1. 在app\controller\index.php文件的index方法中写代码

1.1 where

  1. 模糊查询like
  $user = Db::table('shop_menu')->where('title', 'like', '商品%')->select()->toArray();printf('<pre>%s</pre>', print_r($user, true));$user = Db::table('shop_menu')->where('title', 'not like', '商品%')->select()->toArray();printf('<pre>%s</pre>', print_r($user, true));
  1. 区间查询between
  $user = Db::table('shop_cat')->where('id', 'between', '3,6')->select()->toArray();printf('<pre>%s</pre>', print_r($user, true));$user = Db::table('shop_cat')->where('id','not between','3,6')->select()->toArray();printf('<pre>%s</pre>', print_r($user, true));
  1. 内容查询in
 $user = Db::table('shop_cat')->where('id', 'in', '3,6,1')->select()->toArray();printf('<pre>%s</pre>', print_r($user, true));$user = Db::table('shop_cat')->where('id', 'not in', '3,6,1')->select()->toArray();printf('<pre>%s</pre>', print_r($user, true));

1.2table和name

  1. table要写完整的前缀
  2. name不写完整的前缀,在config\database.php数据库配置 ‘prefix’
        $menu = Db::name('menu')->select()->toArray();printf('<pre>%s</pre>', print_r($menu, true));$menu = Db::name('menu')->select()->toArray();printf('<pre>%s</pre>', print_r($menu->order('fid,asc'), true));

使用name的时候要进行数据库配置,如下所示:

1.3field

选择哪几行进行输出

 $menu = Db::name('menu')->field('id,fid')->select()->toArray();printf('<pre>%s</pre>', print_r($menu, true));

注意要查询的字段用一个引号阔起来

1.4limit

如果只有一个参数就是获取多少条数据,两个参数就是从多少条开始,并且取多少条数据

   $menu = Db::name('menu')->limit(7,5)->select();printf('<pre>%s</pre>', print_r($menu, true));

1.5page

第一个参数是第几页,第二个参数就是每页有多少数据

 $menu = Db::name('menu')->page(2,2)->select();printf('<pre>%s</pre>', print_r($menu, true));

1.6 order

<?phpnamespace app\controller;use think\facade\View;
use think\facade\Db;class Index
{public function index(){$menu = Db::name('menu')->order('id','desc')->select()->toArray();printf('<pre>%s</pre>', print_r($menu, true));}
}

二, 聚合查询

如下式聚合函数

$menu = Db::name('menu')->count();
printf('<pre>%s</pre>', print_r($menu, true));
$menu = Db::name('menu')->where('id','>=',3)->count();
printf('<pre>%s</pre>', print_r($menu, true));

其他的自己测验

三,分页查询

分页查询教程地址


总结

要使用框架的什么功能,就添加上什么类,比如,要使用数据库操作,添加use think\facade\Db,要使用View,就使用use think\facade\view,要使用model功能,就添加use think\model

ThinkPHP6之数据库操作下相关推荐

  1. ThinkPHP6之数据库操作上

    ThinkPHP6之数据库操作上 前言 1. 数据库配置 2. 数据库操作 1. 查询操作 2. 插入操作 3. 修改 4. 删除 5. 其他 3.数据集 总结 前言 注意,tp6在进行语法学习的时候 ...

  2. Node.js SQL数据库操作 (上)(操作MySQL数据库及 数据库连接池)

    文章目录 Node.js MySQL驱动 操作 MySQL 数据库 连接 MySQL 数据库 增删改查操作 防止 SQL 注入攻击 数据库连接池操作 Node.js MySQL驱动 Node.js的原 ...

  3. java 无锁缓存_如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  4. 如何在高并发环境下设计出无锁的数据库操作(Java版本) 转载

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  5. mysql在cmd命令下执行数据库操作

    2019独角兽企业重金招聘Python工程师标准>>> windows+r 运行cmd命令,执行以下操作! 当mysql 数据库文件相对于来说比较大的时候,这个时候你可能在正常环境下 ...

  6. nodeJS下利用mongdb进行数据库操作

    2019独角兽企业重金招聘Python工程师标准>>> 需要引用的node_modules npm install mongodb 此处引用的mongodb模块版本为1.4.12 一 ...

  7. Qt下Sqlite数据库操作

    Sqlite数据库作为Qt项目开发中经常使用的一个轻量级的数据库,可以说是兼容性相对比较好的数据库之一(Sqlite就像Qt的亲儿子,如同微软兼容Access数据库一样).关于Sqlite和Qt的千丝 ...

  8. android开发:如何在卸载应用程序操作下,不删除原来程序数据库?

    情景: 做项目中发现,如果手动卸载安卓应用程序,会清除掉应用原来的数据,比如sqlite3数据库中的数据,为了避免用户卸载应用程序操作下,不会删掉原来的数据. 实现: public class MyA ...

  9. ThinkPHP6项目基操(20.实战部分 数据库操作返回值总结)

    数据库操作返回值总结 0. 前言 1. Db类操作数据库 1.1 新增 1.2 更新 1.3 删除 1.3.1 单条删除 1.3.2 批量删除 1.4 查询 1.4.1 单笔记录 1.4.2 多笔记录 ...

最新文章

  1. matlab无穷积分求解_从零开始的matlab学习笔记——(8)积分
  2. hive内表和外表区别(转载+自己整理)
  3. BeetleX之XRPC远程委托调用
  4. 进程控制 (二) Others
  5. 预充电电路工作原理_LED触摸调光台灯控制电路板的工作原理
  6. python anaconda安装redis_Linux下安装python,redis
  7. V.Replication and Sharding(创建主从数据库)
  8. Oracle function语法
  9. 怎样进入金蝶服务器修改参数,金蝶KIS专业版的系统参数在哪里设置
  10. 推荐9个值得关注的公众号
  11. keyshot Pro for Mac(3D渲染和动画制作)兼容big sur
  12. 如何打出j间隔符号‘·’
  13. 基于JSP的物流信息管理系统(MySQL版)
  14. 充电池中热敏电阻作用
  15. mysql反向递归查询_递归查询所有下级部门树形结构反向递归获取所有ID集合
  16. zabbix-agent配置详解
  17. 单例模式的五种实现形式(懒汉式,饿汉式,双空判断,内部类,枚举)
  18. Word文档目录自动生成和页码设置
  19. Java基础面试题第二期(2021最新版)
  20. 毫秒转换成js年月日时分秒,标准时间转换js

热门文章

  1. 鲁大师2022上半年手机报告:vivo斩获两个冠军,天玑9000超越骁龙8!
  2. “AI赋能,促发展”2021第四届上海人工智能大会开幕
  3. 在线抠图和换背景及擦除工具
  4. PaddleHub实战篇{ERNIE实现文新闻本分类、ERNIE3.0 实现序列标注}【四】
  5. 关联规则与购物篮分析实战
  6. 烤仔建工首支元宇宙Vlog上线!
  7. PIC32MX 读写flash调试经验
  8. pic16多路adc采样
  9. 一、ShardingSphere简介(来自官方文档)
  10. 浏览器兼容性调整(非原创)