如何将MySQL数据库返回的字符串值替换为对应图片?
问题解决:用图片替换MySQL type字段文本
你的代码问题在于先输出了type字段的原始文本,再追加显示图片,所以会同时出现文字(比如"flag")和图片,而不是用图片替换文字。下面是修正后的代码,同时优化了逻辑结构:
<?php require_once "db_config.php"; $sql = "SELECT username, message, time, type FROM notice_board ORDER BY time DESC"; $result = $conn->query($sql); // 建立类型与图片的映射关系,后续维护更方便 $typeImageMap = [ 'flag' => './media/notice_board/flag.png', 'information' => './media/notice_board/info.png', 'stop' => './media/notice_board/stop.png', 'warning' => './media/notice_board/important.png', 'question' => './media/notice_board/question.png' ]; if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo $row["time"]. " | "; // 根据type值输出对应图片,无匹配时显示原文本 if (isset($typeImageMap[$row["type"]])) { echo '<img width="10" height="10" src="'. $typeImageMap[$row["type"]] .'" alt="'. $row["type"] .'" />'; } else { echo $row["type"]; } echo " | ". $row["message"] . "<br>"; } } else { echo "目前暂无新通知"; } ?>
关键修改说明:
- 移除了先输出
$row["type"]文本的代码,改为直接根据type值输出图片 - 用关联数组
$typeImageMap替代一堆elseif,代码更简洁,后续新增类型只需修改数组 - 给图片添加
alt属性,提升网页可访问性 - 将英文提示改为中文,更符合使用场景
内容的提问来源于stack exchange,提问作者JTL
相关产品推荐
相关产品推荐

