Blogger Information
Blog 48
fans 3
comment 1
visits 30344
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
thinkPHP 数据库高级查询及数据请求
吴长清
Original
677 people have browsed it

1.数据库高级查询

1.1 where 条件查询(符号)

  1. // 1.where 条件查询 = > < >= <= <>
  2. // 1.1 = 等于
  3. $res = Db::table('user')->where('id', '=', 2)->select();
  4. print_r($res);
  5. // 1.2 > 大于
  6. $res = Db::table('user')->where('id', '>', 2)->select();
  7. print_r($res);
  8. // 1.3 < 小于
  9. $res = Db::table('user')->where('id', '<', 2)->select();
  10. print_r($res);
  11. // 1.4 >= 大于等于
  12. $res = Db::table('user')->where('id', '>=', 2)->select();
  13. print_r($res);
  14. // 1.5 <= 小于等于
  15. $res = Db::table('user')->where('id', '<=', 2)->select();
  16. print_r($res);
  17. // 1.6 <> 不等于
  18. $res = Db::table('user')->where('id', '<>', 2)->select();
  19. print_r($res);

1.2 模糊查询和模糊取反

  1. // 2.模糊查询和模糊取反
  2. // 2.1 模糊查询 like
  3. $ret = Db::table('user')->where('name', 'like', '%于%')->select();
  4. print_r($ret);
  5. // 2.1 模糊查询取反 notlike
  6. $ret = Db::table('user')->where('name', 'notlike', '%于%')->select();
  7. print_r($ret);

1.3 区间查询和区间取反

  1. // 3.区间查询和区间取反
  2. // 3.1 区间查询 between
  3. $ret = Db::table('user')->where('id', 'between', '2,8')->select();
  4. print_r($ret);
  5. // 3.2 区间去反查询 notbetween
  6. $ret = Db::table('user')->where('id', 'notbetween', '2,8')->select();
  7. print_r($ret);

1.4 指定查询和指定取反

  1. // 4.指定查询和指定取反
  2. // 4.1 指定查询 in
  3. $ret = Db::table('user')->where('id', 'in', '2,8,15')->select();
  4. print_r($ret);
  5. // 4.2 指定取反查询 notin
  6. $ret = Db::table('user')->where('id', 'notin', '2,8,15')->select();
  7. print_r($ret);

1.5 返回要查询的字段 field

  1. // 5.返回要查询的字段field
  2. // 使用关联数组的话 相当于起别名 类似mysql中的as
  3. $arr=[
  4. 'id'=>'xuhao',
  5. 'name'=>'xingmin'
  6. ];
  7. $ret = Db::table('user')->field($arr)->where('id', 'in', '2,8,15')->select();
  8. print_r($ret);

1.6 返回不需要查询的字段 withoutField

  1. // 6. 返回不需要查询的字段 withoutField
  2. $arr = [
  3. 'password', 'add_time', 'last_time', 'status'
  4. ];
  5. $ret = Db::table('user')->withoutField($arr)->where('id', 'in', '2,8,15')->select();
  6. print_r($ret);

1.7 排序查询 order

  1. // 7.排序查询 order
  2. // 关键字 DESC:降序 ASC:升序
  3. $ret = Db::table('user')->order('add_time','DESC')->order('id','DESC')->select();
  4. print_r($ret);

1.8 getLastSql()和fetchSql()

  1. // 8.getLastSql()和fetchSql()
  2. // 8.1 getLastSql()返回最后执行的sql语句
  3. echo Db::getLastSql();
  4. // 8.2 fetchSql() 返回当前执行的sql语句
  5. $ret = Db::table('user')->order('add_time', 'DESC')->order('id', 'DESC')->fetchSql()->select();
  6. print_r($ret);

1.9 条件查询and和or

  1. // 9.条件查询and和or
  2. // 9.1 and:两个以上的where链式操作 表示and
  3. // 返回满足两个条件的数据
  4. $ret = Db::table('user')->where('id', '=', 2)->where('name', '=', '米粒')->select();
  5. print_r($ret);
  6. // 9.2 or:一个以上的whereOr链式操作 表示or
  7. // 返回满足其中一个条件的数据
  8. $ret = Db::table('user')->where('id', '=', 1)->whereOr('name', '=', '米粒')->select();
  9. print_r($ret);

1.10 分页查询

  1. // 10.分页查询 在做分页查询的时候建议使用page()方法
  2. // 10.1 limit() 参数1:从第几条开始 参数2:条数
  3. // 从索引为5的数据为起点 向后查询5条数据
  4. $ret = Db::table('user')->limit(5, 5)->select();
  5. print_r($ret);
  6. // 10.2 page() 参数1:第几页 参数2:条数
  7. // 查询第二页的5条数据
  8. $ret = Db::table('user')->limit(2, 5)->select();
  9. print_r($ret);

1.11 聚合查询

  1. // 11.聚合查询
  2. // 11.1 count() 统计user表有多少条数据
  3. $ret = Db::table('user')->count();
  4. print_r($ret);
  5. // 11.2 min()最小值 查询最小的id
  6. $ret = Db::table('user')->min('id');
  7. print_r($ret);
  8. // 11.3 max()最大值 查询最大的id
  9. $ret = Db::table('user')->max('id');
  10. print_r($ret);

1.12 数据处理

1.13 多库查询

  • 配置database.php文件
    • connections 内添加数据源,其中mysql时默认的 test是新增的数据源,需要在database指定test数据库
  1. // 数据库连接配置信息
  2. 'connections' => [
  3. //默认数据源
  4. 'mysql' => [
  5. // 数据库类型
  6. 'type' => env('database.type', 'mysql'),
  7. // 服务器地址
  8. 'hostname' => env('database.hostname', '127.0.0.1'),
  9. // 数据库名
  10. 'database' => env('database.database', 'tpstudy'),
  11. // 用户名
  12. 'username' => env('database.username', 'root'),
  13. // 密码
  14. 'password' => env('database.password', 'root'),
  15. // 端口
  16. 'hostport' => env('database.hostport', '3306'),
  17. // 数据库连接参数
  18. 'params' => [],
  19. // 数据库编码默认采用utf8
  20. 'charset' => env('database.charset', 'utf8'),
  21. // 数据库表前缀
  22. 'prefix' => env('database.prefix', ''),
  23. // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
  24. 'deploy' => 0,
  25. // 数据库读写是否分离 主从式有效
  26. 'rw_separate' => false,
  27. // 读写分离后 主服务器数量
  28. 'master_num' => 1,
  29. // 指定从服务器序号
  30. 'slave_no' => '',
  31. // 是否严格检查字段是否存在
  32. 'fields_strict' => true,
  33. // 是否需要断线重连
  34. 'break_reconnect' => false,
  35. // 监听SQL
  36. 'trigger_sql' => env('app_debug', true),
  37. // 开启字段缓存
  38. 'fields_cache' => false,
  39. ],
  40. // 更多的数据库配置信息
  41. // 添加test数据源
  42. 'test' => [
  43. // 数据库类型
  44. 'type' => env('database.type', 'mysql'),
  45. // 服务器地址
  46. 'hostname' => env('database.hostname', '127.0.0.1'),
  47. // 数据库名 指定为test
  48. 'database' => env('database.database', 'test'),
  49. // 用户名
  50. 'username' => env('database.username', 'root'),
  51. // 密码
  52. 'password' => env('database.password', 'root'),
  53. // 端口
  54. 'hostport' => env('database.hostport', '3306'),
  55. // 数据库连接参数
  56. 'params' => [],
  57. // 数据库编码默认采用utf8
  58. 'charset' => env('database.charset', 'utf8'),
  59. // 数据库表前缀
  60. 'prefix' => env('database.prefix', ''),
  61. // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
  62. 'deploy' => 0,
  63. // 数据库读写是否分离 主从式有效
  64. 'rw_separate' => false,
  65. // 读写分离后 主服务器数量
  66. 'master_num' => 1,
  67. // 指定从服务器序号
  68. 'slave_no' => '',
  69. // 是否严格检查字段是否存在
  70. 'fields_strict' => true,
  71. // 是否需要断线重连
  72. 'break_reconnect' => false,
  73. // 监听SQL
  74. 'trigger_sql' => env('app_debug', true),
  75. // 开启字段缓存
  76. 'fields_cache' => false,
  77. ],
  78. ],
  • 访问test数据库中user表内的数据
  1. $ret = Db::connect('test')->table('user')->select();
  2. print_r($ret);

1.14 name和table的区别

  • name 如果在database.php中配置内表前缀,在查询的时候可以省略表名称的前缀直接查询
  • table 无论是否配置表前缀,在查询的时候都需要完整的表名称

2.数据请求Request

  1. // 引入Request静态类
  2. use think\facade\Request;

2.1 GET请求

  1. // 1.获取get请求数据
  2. print_r(Request::get());
  3. echo '<br>';
  4. // 2.获取get请求数据的某一个值
  5. print_r(Request::get('name'));
  6. echo '<br>';

2.2 POST请求

  • 使用apipost模拟post请求

    1. // 1.获取post请求数据
    2. print_r(Request::post());
    3. // 2.获取post请求数据的某一个值
    4. print_r(Request::post('username'));

  • apipost下载地址: https://www.apipost.cn/?utm_source=10120

Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post