PHP While循环每3条数据库记录后输出指定内容的问题排查
解决每3条数据库记录后展示特定内容的问题
你的核心问题是误用了总记录数作为循环计数器,导致判断逻辑完全错位。初始的$num是rowCount()返回的总记录条数,后续自增后无法准确对应当前循环到第几条记录。
修正后的代码
<?php $query = "SELECT * FROM articles ORDER BY id DESC LIMIT 6"; $stmt = $con->prepare($query); $stmt->execute(); $total = $stmt->rowCount(); if ($total>0) { // 单独维护一个循环计数器,从1开始计数 $counter = 1; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { extract($row); echo "DATA FROM DATABASE"; // 判断当前是否是第3、6、9...条记录 if (($counter % 3) == 0) { echo '<h1>code every 3 rows</h1>'; } $counter++; } } // 无记录时的提示 else{ echo "no data found"; } ?>
逻辑说明
- 新增
$counter变量专门追踪当前循环的记录序号,从1开始递增。 - 当
$counter % 3 == 0时,说明已经处理完第3、6、9...条记录,此时输出你需要的特定内容。 - 针对6条记录的场景,会在第3条和第6条记录后分别输出指定内容,完全符合每3条后展示的需求。
内容的提问来源于stack exchange,提问作者Nashie
相关产品推荐
相关产品推荐

