【问题标题】:What is the correct function to use when saving HTML data to a MySQL database?将 HTML 数据保存到 MySQL 数据库时使用的正确函数是什么?
【发布时间】:2011-06-16 16:49:10
【问题描述】:

我知道这是一个相当基本的问题,但是当 HTML 插入 MySQL 数据库时,对表单输入字段使用的正确函数是什么? (mysql_real_escape_string、htmlentities 等)

另外,在文本字段、html 页面等中打印数据库中的值时应该使用哪个函数?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    插入数据库时​​使用mysql_real_escape_string(),打印前使用htmlspecialchars()

    【讨论】:

    • @user576875,我在保存表单时使用 mysql_real_escape_string(),在输入字段中打印值时使用 htmlspecialchars()(用于编辑目的),但反斜杠“\”出现在任何前面引号“。如果用户故意将反斜杠添加到输入字段,我如何才能防止这种情况发生,同时确保出现反斜杠?
    • 在您将输入插入数据库之前,它们会被转义两次。如果您使用的是 PHP,请确保关闭魔术引号:php.net/manual/en/security.magicquotes.php
    • 我正在运行 MAMP 并启用了 PHP 5.3.2。我搜索了“魔术”,唯一出现的是:魔术语录;使用 Sybase 风格的魔术引号(使用 '' 而不是 \' 转义 ')。 magic_quotes_sybase = 关闭。当我单击您提供的magicquotes 链接时,它说它在PHP 5.3 中已被贬低。由于魔术引号已折旧且magic_quotes_sybase 已设置为关闭,我应该更改什么设置?
    • 我将它添加到我的 ini 文件并重新启动了 Apache,但反斜杠仍然出现在我的输入字段中的 "s 之前(即使在删除它们并保存更新之后)。还有其他想法吗?
    • 你修改的是正确的 php.ini 文件吗?查看phpinfo()的输出
    【解决方案2】:

    如果您使用 PDO 和准备好的语句,则不必太担心您在数据库中插入的数据。

    关于输出,看你需要什么:如果是真正的html输出,你不能使用htmlentities,因为输出不再是html了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      相关资源
      最近更新 更多