数据库表达式查询 - 原生mysql查询 - 事务操作 - 翻页

作业内容:1、练习数据库表达式:普通查询、表达式查询、快捷查询、区间查询、组合查询 2、练习原生mysql查询 3、练习事务操作 4、练习翻页功能

1. 练习数据库表达式

  1. $res[] = Db::table('boke')->field(['id', 'title'])->find(1);
  2. $res[] = Db::table('boke')->field(['id', 'title'])->where('id', 2)->find();
  3. $res[] = Db::table('boke')->field(['id', 'title'])->select(['id' => 3])->toArray();
  4. $res[] = Db::table('boke')->field(['id', 'title'])->where([['id', '=', 4]])->select()->toArray();
  5. $res[] = Db::table('boke')->field(['id', 'title'])->where('id', 1)->value('title');
  6. $res[] = Db::table('boke')->field(['id', 'title'])->where([['id', '<', 2]])->column('title');
  7. $res[] = Db::table('boke')->field(['id', 'title'])->where([['id', '<', 3]])->column('title', 'id');
  8. $res[] = Db::getLastSql();
  9. $res[] = Db::table('boke')->field(['id', 'title'])->find(0);
  10. $res[] = Db::table('boke')->field(['id', 'title'])->fetchSql()->find(0);
  11. $res[] = Db::table('boke')->field(['id', 'title'])->where('id', 0)->select()->toArray();
  12. $res[] = Db::table('boke')->field(['id', 'title'])->where('id', 0)->fetchSql()->select();
  13. halt($res);

查询测试1

  1. // null not null
  2. $res[] = Db::table('boke')->where('id', 1);
  3. // > >= < <= <>
  4. $res[] = Db::table('boke')->where('id', '=', 2);
  5. $res[] = Db::table('boke')->where([['id', '=', 3]]);
  6. // like not like
  7. $res[] = Db::table('boke')->where([['title', 'like', '%php%']]);
  8. // in not in between not between
  9. $res[] = Db::table('boke')->where([['id', 'in', '4,5']]);
  10. $res[] = Db::table('boke')->where([['id', 'between', [6,7]]]);
  11. $res = array_map(function($item){
  12. $item = $item->field(['id', 'title', 'img'])->limit(1)->select()->toArray();
  13. return $item;
  14. }, $res);
  15. halt($res);

查询测试2

  1. // Null NotNull
  2. $res[] = Db::table('boke')->whereNull('img');
  3. // Like NotLike
  4. $res[] = Db::table('boke')->whereLike('img', '%/upload/%');
  5. // In NotIn Between NotBetween
  6. $res[] = Db::table('boke')->whereIn('id', '1,2');
  7. $res[] = Db::table('boke')->whereBetween('id', [3,4]);
  8. $res[] = Db::table('boke')->where([['id', 'in', [5,6]]])->whereOr('id', 7);
  9. $res = array_map(function($item){
  10. $item = $item->field(['id', 'title', 'img'])->limit(1)->select()->toArray();
  11. return $item;
  12. }, $res);
  13. halt($res);

查询测试3

  1. $res[] = Db::table('boke')->whereNull('img')->count();
  2. // max min avg sum
  3. $res[] = Db::table('boke')->whereLike('img', '%/upload/%')->max('num');
  4. $res[] = Db::table('boke')->where([['id', 'in', [5,6]]])->whereOr('id', 7)->min('id');
  5. halt($res);

查询测试4

2. 练习原生mysql查询

  1. // execute 增改
  2. $res[] = Db::execute("insert `boke` (`title`, `content`) values ('title', 'content'), ('title2', 'content2')");
  3. $res[] = Db::execute("update `boke` set `content`='content2-modify' where `title`='title2'");
  4. // query 查删
  5. $res[] = Db::query("select `id`, `title`, `content` from `boke` where id > :id order by `id` desc limit 0,2", ['id' => 0]);
  6. $res[] = Db::query("delete from `boke` where `title` like 'title%'");
  7. halt($res);

原生mysql查询

3. 练习事务操作

  1. $res[] = Db::transaction(function(){
  2. $id = Db::table('cat')->insertGetId(['name' => 'category']);
  3. Db::table('boke')->insert(['title' => 'article', 'cat' => $id]);
  4. });
  5. $res[] = Db::table('boke')->field(['id', 'title', 'cat'])->order('id', 'desc')->limit(1)->select()->toArray();
  6. $res[] = Db::table('cat')->where('name', 'category')->delete();
  7. $res[] = Db::table('boke')->where('title', 'article')->delete();
  8. halt($res);

事务操作

4. 练习翻页功能

  • 控制器 app\index\controller\index.php
  1. namespace app\index\controller;
  2. use think\facade\Db;
  3. use app\BaseController;
  4. use think\facade\View;
  5. use think\facade\Request;
  6. class Index extends BaseController
  7. {
  8. // 练习
  9. public function demo()
  10. {
  11. $list = Db::table('boke')->where('status', 1)->paginate([
  12. 'list_rows' => 10,
  13. // 'var_page' => 'page',
  14. // 'page' => Request::get('page'),
  15. // 'query' => Request::param()
  16. ]);
  17. // $page = $list->render(); // 分页显示
  18. $total = $list->total();
  19. return view::fetch('demo', compact('list', 'total'));
  20. }
  21. }
  • 视图 app\index\view\index\demo.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <h3>数据分页</h3>
  11. <ul>
  12. {volist name='list' id='vo'}
  13. <li>{$vo.id} - {$vo.title}</li>
  14. {/volist}
  15. </ul>
  16. Total: {$total} pages: {$list|strip_tags='<a>'|raw}
  17. </body>
  18. </html>

数据分页

博客分页: https://www.php.cn/blog/detail/27641.html

更多相关文章

  1. 【ThinkPHP框架】tp的视图标签、request请求、数据库链式查询等
  2. 接入超过100家快递物流查询API接口调用指南
  3. 快递公司如何接入快递100?快递100的快递查询订阅推送接口示例
  4. 快递公司如何接入快递100?快递100的快递实时查询接口示例
  5. 史上最全面MySQL数据库中DML查询语句SELECT详解(收藏)
  6. 数据库查询构造器
  7. 思迈特软件 Smartbi数据查询能力如何?
  8. mysql慢查询日志
  9. 快递查询、快递单识别、电子面单、家寄件等接口代码-快递100JAVA

随机推荐

  1. 使用jquery和php手动在数据库中增加一个
  2. 为什么foreach在循环中不修改数组时要复
  3. 如何在Laravel 5表单请求中使用请求路由
  4. ThinkPHP5开发Api接口简单实例
  5. php简易增删改查
  6. 通过php mysql jquery每秒添加新行
  7. 从数组php获得第一个非空值。
  8. 怎么用php编写一个像windows的回收站呢?
  9. 在Paragraphs中显示mysql内容时出现问题
  10. 在MySQL数据库中搜索与多个Tag记录相关/