You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

存储于数据库的广告商Logo在警告信息中显示而非表格内的PHP技术问题

问题排查与解决方案

首先,你的代码里输出广告商Logo的那一行存在明显的语法错误,这就是图片无法正常显示的核心原因:

你现在写的是:

echo "<td>" . $row['<img src="data:image/jpeg;base64,'.base64_encode($row['advertiser_logo']).'"/>'] . "</td>";

这行代码的逻辑完全错了——你把完整的<img>标签字符串当成了$row数组的键去取值,而数据库里的图片字段明明是advertiser_logo,这会导致PHP找不到这个数组键,抛出警告,同时输出空内容或者错误文本。

修正方案

把这一行代码替换成正确的写法:直接构建<img>标签并输出,不需要通过$row去访问这个不存在的键:

echo "<td><img src='data:image/jpeg;base64," . base64_encode($row['advertiser_logo']) . "' alt='{$row['advertiser_Name']} Logo' style='width: 80px; height: auto;' /></td>";

额外优化建议

  1. 添加图片样式:我给代码加了style='width: 80px; height: auto;',避免Logo过大撑爆表格,你可以根据需求调整尺寸。
  2. 添加alt属性:这不仅符合网页 accessibility 规范,还能在图片加载失败时显示广告商名称,提升用户体验。
  3. XSS防护:对于其他输出的字段(比如广告商名称、URL等),建议用htmlspecialchars()转义,防止跨站脚本攻击,比如:
    echo "<td>" . htmlspecialchars($row['advertiser_Name'], ENT_QUOTES) . "</td>";
    
  4. 后续重构提示:你提到后续会把图片存储从数据库改成文件系统,这确实是更优的方案——数据库存储二进制图片会增大DB体积、降低查询效率,后续可以考虑把图片存在服务器目录,数据库只存储图片的路径或URL。

内容的提问来源于stack exchange,提问作者Georgeehall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 21:59:06