MySQL列名含&导致PHP URL传参数据不显示问题求助
解决方案
问题根源
你遇到的问题是URL编码与HTML实体编码的顺序错误:直接输出原始字符串到HTML的href属性时,浏览器会自动把&转成HTML实体&,导致URL中的参数分隔符被错误解析——服务器会把&识别成新的参数开头,最终Course参数只拿到a ,而非完整的a & B。
修复代码
把你的链接代码改成如下形式,先做URL编码,再对整个URL做HTML实体转义:
<a href="<?php echo htmlspecialchars('View-Diploma.php?Course=' . urlencode($cou_row['CourseName'])); ?>">查看证书</a>
为什么这样有效
urlencode($cou_row['CourseName']):将字符串中的&转成URL编码格式%26,确保它不会被当作URL的参数分隔符。htmlspecialchars(...):对拼接好的完整URL做HTML实体转义,防止HTML注入风险,同时确保浏览器正确解析href属性中的特殊字符,不会把%26再转成&。
为什么之前的尝试没用
- 单独用
urlencode但没配合htmlspecialchars:直接输出到HTML属性时,浏览器仍会把URL中的特殊字符转成HTML实体,导致%26被错误处理。 - 修改MySQL排序规则:问题出在前端URL的编码逻辑,和数据库存储的字符集/排序规则无关。
内容的提问来源于stack exchange,提问作者Vikrant
相关产品推荐
相关产品推荐

