一. 流程控制结构-循环
1.for 循环
for ( 初值表达式 ; 条件表达式 ; 循环变量增值 ) {
循环体;
}
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>