ThinkPHP6之数据库操作下
ThinkPHP6之数据库操作下
- 前言
- 一,查询表达式
- 1.1 where
- 1.2table和name
- 1.3field
- 1.4limit
- 1.5page
- 1.6 order
- 二, 聚合查询
- 三,分页查询
- 总结
前言
数据库操作除了增,删,查,改,这四个基本操作外,还有一些细节东西处理,记住这句话,
了解对应的链式操作用链式操作,不懂链式操作直接使用query()和excute()
一,查询表达式
在进行查询表达式之前做如下两件事:
- 添加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);
在app\controller\index.php文件的index方法中写代码
1.1 where
- 模糊查询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));
- 区间查询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));
- 内容查询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
- table要写完整的前缀
- 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之数据库操作下相关推荐
- ThinkPHP6之数据库操作上
ThinkPHP6之数据库操作上 前言 1. 数据库配置 2. 数据库操作 1. 查询操作 2. 插入操作 3. 修改 4. 删除 5. 其他 3.数据集 总结 前言 注意,tp6在进行语法学习的时候 ...
- Node.js SQL数据库操作 (上)(操作MySQL数据库及 数据库连接池)
文章目录 Node.js MySQL驱动 操作 MySQL 数据库 连接 MySQL 数据库 增删改查操作 防止 SQL 注入攻击 数据库连接池操作 Node.js MySQL驱动 Node.js的原 ...
- java 无锁缓存_如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
- 如何在高并发环境下设计出无锁的数据库操作(Java版本) 转载
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
- mysql在cmd命令下执行数据库操作
2019独角兽企业重金招聘Python工程师标准>>> windows+r 运行cmd命令,执行以下操作! 当mysql 数据库文件相对于来说比较大的时候,这个时候你可能在正常环境下 ...
- nodeJS下利用mongdb进行数据库操作
2019独角兽企业重金招聘Python工程师标准>>> 需要引用的node_modules npm install mongodb 此处引用的mongodb模块版本为1.4.12 一 ...
- Qt下Sqlite数据库操作
Sqlite数据库作为Qt项目开发中经常使用的一个轻量级的数据库,可以说是兼容性相对比较好的数据库之一(Sqlite就像Qt的亲儿子,如同微软兼容Access数据库一样).关于Sqlite和Qt的千丝 ...
- android开发:如何在卸载应用程序操作下,不删除原来程序数据库?
情景: 做项目中发现,如果手动卸载安卓应用程序,会清除掉应用原来的数据,比如sqlite3数据库中的数据,为了避免用户卸载应用程序操作下,不会删掉原来的数据. 实现: public class MyA ...
- 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 多笔记录 ...
最新文章
- matlab无穷积分求解_从零开始的matlab学习笔记——(8)积分
- hive内表和外表区别(转载+自己整理)
- BeetleX之XRPC远程委托调用
- 进程控制 (二) Others
- 预充电电路工作原理_LED触摸调光台灯控制电路板的工作原理
- python anaconda安装redis_Linux下安装python,redis
- V.Replication and Sharding(创建主从数据库)
- Oracle function语法
- 怎样进入金蝶服务器修改参数,金蝶KIS专业版的系统参数在哪里设置
- 推荐9个值得关注的公众号
- keyshot Pro for Mac(3D渲染和动画制作)兼容big sur
- 如何打出j间隔符号‘·’
- 基于JSP的物流信息管理系统(MySQL版)
- 充电池中热敏电阻作用
- mysql反向递归查询_递归查询所有下级部门树形结构反向递归获取所有ID集合
- zabbix-agent配置详解
- 单例模式的五种实现形式(懒汉式,饿汉式,双空判断,内部类,枚举)
- Word文档目录自动生成和页码设置
- Java基础面试题第二期(2021最新版)
- 毫秒转换成js年月日时分秒,标准时间转换js