【问题标题】:PHP - Storing Text in MySQL DatabasePHP - 在 MySQL 数据库中存储文本
【发布时间】:2010-10-17 12:42:33
【问题描述】:

我的网站上有一个文本框,我需要存储用户输入到我的数据库中的任何内容,并在以后检索它。我需要完全按照用户输入的方式存储它,包括特殊字符、回车符等。

我应该在 PHP 中使用什么过程将其存储在我的数据库字段(这是一个“文本”字段)中?我应该使用 PHP 的 html_encode 还是类似的东西?

谢谢。

编辑:我还需要存储正确的格式,即制表符和多个空格。

【问题讨论】:

    标签: php mysql text html-encode


    【解决方案1】:

    您没有对其进行编码以便将其存储在 mysql 中。

    确保使用参数化插入命令,以避免 SQL 注入。

    【讨论】:

      【解决方案2】:

      以下应该有效:

      if (get_magic_quotes_gpc()) {
        $content = stripslashes($content);
      }
      $content = mysql_real_escape_string($content);
      

      如果您的列是 utf8,那么特殊字符应该不会有问题。正确格式化内容后,您可以使用标准插入方法将其提供给 mysql。

      【讨论】:

        【解决方案3】:

        使用mysql_real_escape_string():

        $safetext = mysql_real_escape_string($_POST['text']);
        $query = "INSERT INTO my_table (`my_field`) VALUES ('$safetext')";
        mysql_query($query);
        

        应该可以的。

        【讨论】:

          【解决方案4】:

          在将数据写入数据存储时,您不应该对数据进行 html 编码 - 这样您也可以将数据用于其他用途(例如电子邮件、PDF 文档等)。正如Assaf 已经说过的:必须通过转义输入或使用参数化插入查询来避免 SQL 注入。

          你应该,不,比方说,必须然而,在 HTML 页面上显示数据时对数据进行 html 编码!这将使危险的 HTML 或 Javascript 代码变得无用,因为数据中存在的 HTML 标记将不再被浏览器识别为 HTML 标记。

          当您允许用户发布带有 HTML 标记的数据时,这个过程会稍微复杂一些。然后,您必须跳过输出编码以支持输入清理,这可以根据您的需要(例如允许的标签)任意复杂。

          【讨论】:

            【解决方案5】:

            除了格式之外,要正确存储用户文本,您所要做的就是使用nl2br($inputtext) 将所有换行符转换为换行符。在过滤输入后执行此操作。

            【讨论】:

              猜你喜欢
              • 2010-12-19
              • 1970-01-01
              • 2013-08-14
              • 2014-06-01
              • 1970-01-01
              • 2011-10-30
              • 1970-01-01
              • 2016-06-17
              • 1970-01-01
              相关资源
              最近更新 更多