【问题标题】:mysql text value with apostrophe not showing up correctly带有撇号的mysql文本值未正确显示
【发布时间】:2011-05-24 17:16:02
【问题描述】:

我将以下 TEXT 值插入 MySQL 使用..

$groupname = addlashes($_POST['groupname'];

从我正在使用的 Mysql 获取值时

$name = $row['groupname'];

回声 $name;

这显示为“戴维斯先生的小组”

但是当这个值添加到表单中时

然后我将值传递给另一个页面,并将其检索为

$name = $_POST['groupname']; 回声 $name;

它显示为“戴维斯先生”,将所有内容放在撇号之前。

??不知道为什么,我尝试添加 stripslashes($_POST['groupname']; 并发生同样的事情

【问题讨论】:

    标签: php forms addslashes


    【解决方案1】:
    <input name='groupname' type='hidden' value='$groupname' />
    

    将生成:

    <input name='groupname' type='hidden' value='Mr Davis's Group' />
                                                         ^----
    

    在指定位置,浏览器的解析器将看到value= 的“结束”,然后是一些未知属性s 和损坏的属性Group '

    要在表单中嵌入这种类型的文本,您需要使用 htmlspecialchars(),它将任何 HTML 元字符(&lt;&gt;'")转换为它们的字符实体等价物,以便它们可以安全地嵌入到表单中。

    addslashes() 是一种已弃用的“安全”向数据库添加内容的方法。嵌入 HTML 并不安全。

    【讨论】:

    • 啊,你的观察力真棒。 +1
    • 在放入数据库之前或之后,我究竟会在哪里使用 htmlspecialchars?
    • 检索数据时。永远不要将 html 编码的数据存储在数据库中,因为您永远不知道以后需要这些数据做什么。如果它进入电子表格,那么 HTML 编码将毫无用处,您只需要撤消它。
    • 我知道这是旧的,但为了完整起见:在这种情况下,您可能需要使用标志 ENT_QUOTES: htmlspecialchars($groupname, ENT_QUOTES)
    【解决方案2】:

    检查输入网页的文本编码。匹配您的数据库字符集 - 使用 utf-8。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2011-06-08
      • 2011-10-06
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多