| ID |
姓名 |
,并在循环中拼接| ... |
。二、使用foreach循环配合PDO::fetchAll()
该方法基于PDO预处理机制,先将全部结果一次性提取为二维数组,再用foreach遍历,语法简洁且便于控制整体结构。
1、使用PDO对象执行查询后调用fetchAll(PDO::FETCH_ASSOC)获得二维数组。
2、使用foreach($rows as $row) { }开始遍历。
3、在循环中直接访问键名,例如echo "" . htmlspecialchars($row['title']) . "";
4、注意对输出内容使用htmlspecialchars()防止XSS,尤其当字段含用户输入时。
三、使用for循环配合mysqli_num_rows()和mysqli_data_seek()
该方法显式控制索引位置,适用于需按序号操作或反向遍历等特殊场景,强调对结果集长度与指针的精确管理。
1、调用mysqli_num_rows($result)获取总行数,并赋值给变量$count。
2、使用for($i = 0; $i
3、每次循环开始前调用mysqli_data_seek($result, $i),重置内部指针至第$i行。
4、调用mysqli_fetch_assoc($result)获取当前行,并输出,例如printf("第%d条:%s
", $i + 1, $row['content']);
四、使用PDOStatement::fetch()配合while循环
该方法不预先加载全部数据,而是每次fetch仅取一行,内存占用低,适合处理大量记录。
1、通过PDOStatement对象执行查询后,直接进入while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { }。
2、在循环内构造HTML元素,如echo "" . $row['id'] . "";
3、避免在循环中重复执行查询或重建PDOStatement对象。
4、确保PDO对象已设置错误模式为异常:$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
五、使用模板分离方式结合foreach(Twig/Laravel Blade风格模拟)
该方法将PHP逻辑与HTML展示分离,提升可维护性,即使不使用框架也可通过简单字符串替换模拟基本模板行为。
1、将查询结果数组赋值给变量$rows,并读取包含{{ item.name
}}占位符的HTML模板字符串。
2、初始化空字符串$output,然后foreach($rows as $item) { }逐条替换模板中的占位符。
3、使用str_replace()替换每个占位符,例如str_replace('{{ item.id }}', $item['id'], $template);
4、将每次替换后的片段拼接到$output中,最终echo $output输出完整HTML列表。