PHP如何将字符串存储的多科目分别渲染为独立按钮
问题描述

需要将存储的每个科目单独展示为独立按钮,此前使用explode和implode函数实现未达到预期效果。
科目存储逻辑:所有科目拼接为字符串存入数据库,前端展示前做字符串与数组的格式转换。
当前使用的代码如下:
<?php $id = $_GET['id']; $s = "SELECT * FROM enrollment WHERE stud_id = '$id'"; $q = mysqli_query($conn, $s); if(mysqli_num_rows($q) > 0){ while($row = mysqli_fetch_assoc($q)){ $subjects = $row['stud_subjects']; ?> <button class="collapsible"> <?php $sub = explode(", ", $subjects); $subs = implode("<br>", $sub); echo $subs; ?> </button> <?php } } ?>
错误原因
原有逻辑把拆分后的科目数组用<br>拼接后,全部放到了同一个<button>标签内部,最终只会生成1个按钮,所有科目都显示在这一个按钮里,自然无法生成每个科目对应的独立按钮。
修复代码
拆分得到科目数组后,不需要做字符串拼接,直接遍历数组,为每个科目单独生成一个按钮标签即可:
<?php $id = $_GET['id']; $s = "SELECT * FROM enrollment WHERE stud_id = '$id'"; $q = mysqli_query($conn, $s); if(mysqli_num_rows($q) > 0){ while($row = mysqli_fetch_assoc($q)){ $subjects = $row['stud_subjects']; $subArr = explode(", ", $subjects); // 循环为每个科目生成独立按钮 foreach($subArr as $subject){ ?> <button class="collapsible"> <?php echo trim($subject); ?> </button> <?php } } } ?>
安全提示:当前代码直接将GET参数拼接进SQL语句,存在SQL注入风险,建议后续改用预处理语句绑定参数查询,避免数据库被恶意攻击。
内容的提问来源于stack exchange,提问作者Jayson
相关产品推荐
相关产品推荐

