一. 流程控制结构-循环

1.for 循环

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

1、初值表达式

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

2、条件表达式

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

3、循环变量增值

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

2.while循环

while(表达式){
   语句块;
}

1、循环变量初始值

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

2、循环语句的条件

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

3、循环变量递增

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

3. do-while循环

do{
  语句块;
}while(表达式);

1、循环变量初始值

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

2、循环语句的条件

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

3、循环变量递增

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

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

4. forearch循环

foreach(array as value){
   循环体;
}
或
foreach(array as key=>value){
   循环体;
}

1、遍历数组

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

5. break

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

6. continue

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

二. 数据库操作

1. 聚合函数

MySQL 聚合查询命令:

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

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

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

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

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

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

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

2. 数据分组

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

注意

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

3. 排序查询

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

三. PDO获取多条记录

获取结果集中的一条记录

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开始的列号的数组
$res = $st->fetchAll(PDO::FETCH_ASSOC);

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

<?php
    $url = "mysql:host=mysql;dbname=database_lesson_30511_14_11195";//数据库ip和库名
    $user = "lesson_30511_14_11195";//数据库用户
    $pwd = "66188fbfb53dd2040019fb833dabe192";//数据库密码

    $pdo = new PDO($url,$user,$pwd);


    $sql = "select * from policy";

    echo $sql . "<br>";
    $st = $pdo->query($sql);

    $res = $st->fetchAll(PDO::FETCH_ASSOC);



?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #gov{
            width:1200px;
            margin: 0 auto;
            background: rgb(245, 248, 253);
        }

        h1{
            text-decoration: underline;
        }
        .line{
            max-width: 1200px;
            border-bottom: 1px solid black;
            height: 50px;
            display: flex;
            justify-content: space-between;
            line-height: 50px;
            font-size: 20px;
        }
        a{
            text-decoration: none;
            color: black;
            padding-left: 10px;
        }
        span{
            padding-right: 10px;
        }

    </style>
</head>
<body>
    <div id="gov">
        <h1>政策解读</h1>
            <?php foreach ($res as $key => $value): ?>
                <!-- html... -->
                <div class="line">
                    <a href="#"> <?php echo $value['title']; ?></a>
                    <span> <?php echo $value['createtime']; ?> </span>
                </div>
            <?php endforeach; ?>
    </div>

</body>
</html>