一. 流程控制结构-循环

1.for 循环

  1. for ( 初值表达式 ; 条件表达式 ; 循环变量增值 ) {
  2. 循环体;
  3. }

1、初值表达式

  1. $i = 0
  2. 定义循环变量 i,并设置初始值为 0

2、条件表达式

  1. $i<10
  2. $i<10 作为循环执行的条件,如果该条件成立,则 for 将会重复执行 {} 中的代码。

3、循环变量增值

  1. $i++
  2. for 循环每执行一次,i 变量的值就会加 1,从而控制 for 循环语句的执行次数。
  3. 注意:for 语句中的初值表达式、条件表达式、循环变量增值,这三个表达式之间必须用分号分隔开。

2.while循环

  1. while(表达式){
  2. 语句块;
  3. }

1、循环变量初始值

  1. $i = 0;
  2. 定义循环变量 i,并设置初始值为 0
  3. 注意:控制循环语句执行次数的变量,称为循环变量。

2、循环语句的条件

  1. while($i<=10){…}
  2. $i<=10 作为循环执行的条件,如果该条件成立,则 while 将会执行 {} 中的代码。

3、循环变量递增

  1. $i++;
  2. while 循环每执行一次,i变量的值就会加 1,从而控制 while 循环语句的执行次数。

3. do-while循环

  1. do{
  2. 语句块;
  3. }while(表达式);

1、循环变量初始值

  1. $i = 0;
  2. 定义循环变量 i,并设置初始值为 0

2、循环语句的条件

  1. do{
  2. ……
  3. }while($i<=5);
  4. $i<=5 作为循环执行的条件,如果该条件成立,则 do-while 将会重复执行 {} 中的代码。

3、循环变量递增

  1. $i++;
  2. do-while 循环每执行一次,i变量的值就会加 1,从而控制 do-while 循环语句的执行次数。

注意:do-while循环的循环体,至少会执行一次

4. forearch循环

  1. foreach(array as value){
  2. 循环体;
  3. }
  4. foreach(array as key=>value){
  5. 循环体;
  6. }

1、遍历数组

  1. foreach ($userInfo as $k=>$v){
  2. echo "{$k}:{$v}<br/>";
  3. }
  4. 通过 foreach 语句,遍历 $userInfo 数组。
  5. $userInfo:将要通过 foreach 遍历的数组。
  6. $k:对应数组的下标。
  7. $v:对应数组的值。

5. break

  1. break; // 结束当前层循环
  2. break n; // 结束从内向外的第 n 层循环,当前所在层为第一层

6. continue

  1. continue; // 结束当前层循环
  2. continue n; // 结束从内向外的第 n 层循环,当前所在层为第一层

二. 数据库操作

1. 聚合函数

MySQL 聚合查询命令:

count(*):返回查询的记录总数。

sum(字段名):返回指定字段的总和。

avg(字段名):返回指定字段的平均值。

max(字段名):返回指定字段的最大值。

min(字段名):返回指定字段的最小值。

group_concat(字段名):返回分组数据中指定字段拼接后的值

  1. select 聚合函数(字段) , 聚合函数(字段) , ... from 表名 where 条件;

2. 数据分组

  1. select 分组字段, 聚合函数,... from 表名 group by 分组字段;

注意

  • 当使用分组时,实际是按指定的数据进行按指定的字段归类查询.所以查询结果只存在分组的字段
  • 在语法书写规则上,由于上一条的原因, select 后出现的字段名,只能是 group by 后出现的字段名,否则会报错.
  • 如果需要其它字段的数据,需要配合前面的聚合函数对这些字段进行操作.
  • 分组也可以实现数据去重的功能.

3. 排序查询

  1. select * from tableName order by sortField1 asc|dese , sortField2 asc|dese, ....; //默认asc

三. PDO获取多条记录

获取结果集中的一条记录

  1. PDOStatement::fetchAll(int $fetch_style = ?, mixed $fetch_argument = ?, array $ctor_args = array()): array

通过 PDOStatement 实例,调用 fetchAll() 方法,获得查询结果集中的多条记录。

fetch_style 参数决定 POD 如何返回行,此值必须是 PDO::FETCH_* 系列常量中的一个,缺省为 PDO::ATTR_DEFAULT_FETCH_MODE 的值 (默认为 PDO::FETCH_BOTH )。

  • PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组(常用)
  • PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组
  1. $res = $st->fetchAll(PDO::FETCH_ASSOC);

四.案例练习(政策解读)

  1. <?php
  2. $url = "mysql:host=mysql;dbname=database_lesson_30511_14_11195";//数据库ip和库名
  3. $user = "lesson_30511_14_11195";//数据库用户
  4. $pwd = "66188fbfb53dd2040019fb833dabe192";//数据库密码
  5. $pdo = new PDO($url,$user,$pwd);
  6. $sql = "select * from policy";
  7. echo $sql . "<br>";
  8. $st = $pdo->query($sql);
  9. $res = $st->fetchAll(PDO::FETCH_ASSOC);
  10. ?>
  11. <!DOCTYPE html>
  12. <html lang="en">
  13. <head>
  14. <meta charset="UTF-8">
  15. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  16. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  17. <title>Document</title>
  18. <style>
  19. #gov{
  20. width:1200px;
  21. margin: 0 auto;
  22. background: rgb(245, 248, 253);
  23. }
  24. h1{
  25. text-decoration: underline;
  26. }
  27. .line{
  28. max-width: 1200px;
  29. border-bottom: 1px solid black;
  30. height: 50px;
  31. display: flex;
  32. justify-content: space-between;
  33. line-height: 50px;
  34. font-size: 20px;
  35. }
  36. a{
  37. text-decoration: none;
  38. color: black;
  39. padding-left: 10px;
  40. }
  41. span{
  42. padding-right: 10px;
  43. }
  44. </style>
  45. </head>
  46. <body>
  47. <div id="gov">
  48. <h1>政策解读</h1>
  49. <?php foreach ($res as $key => $value): ?>
  50. <!-- html... -->
  51. <div class="line">
  52. <a href="#"> <?php echo $value['title']; ?></a>
  53. <span> <?php echo $value['createtime']; ?> </span>
  54. </div>
  55. <?php endforeach; ?>
  56. </div>
  57. </body>
  58. </html>