如何用PHP读取MySQL数据渲染为Bootstrap进度条并解决Points键未定义报错
报错原因&解决方案
这个Undefined array key "Points"报错核心是你读取的数组中不存在Points这个键,按以下步骤排查即可解决:
1 定位字段缺失原因
- 检查你的SQL查询语句是否包含
Points字段,若你写的是SELECT id,username FROM 用户表这类漏写Points的语句,返回结果自然没有对应键 - 核对数据库表中积分字段的实际名称,注意数组键严格区分大小写,如果数据库字段是小写
points,你写$row['Points']就会触发报错 - 打印查询返回的完整结果确认数据是否正常获取:在index.php第9行前加入
var_dump($row);exit;,如果输出为false或空数组,说明你根据用户ID查询的条件没有匹配到任何数据,需要核对session中存储的用户ID是否和数据库中存储的ID一致
2 修复报错+进度条不显示问题
给积分取值加判空逻辑,同时设置初始10分的默认值,就算查询异常也不会触发报错,且能正常显示初始进度:
// 积分默认值设为10,匹配初始要求 $userPoints = 10; // 只有查询返回有效数据且存在Points字段时才替换默认值 if (!empty($row) && isset($row['Points'])) { $userPoints = (int)$row['Points']; } // 转换为百分比,限制最高100% $progressPercent = min($userPoints, 100); ?> <!-- Bootstrap进度条绑定百分比 --> <div class="progress"> <div class="progress-bar" role="progressbar" style="width: <?php echo $progressPercent; ?>%" aria-valuenow="<?php echo $progressPercent; ?>" aria-valuemin="0" aria-valuemax="100"> <?php echo $userPoints; ?>/100 </div> </div>
内容的提问来源于stack exchange,提问作者DerangedBoBo
相关产品推荐
相关产品推荐

