PHP - 在MySQL数据库中存储文本

时间:2009-04-04 06:42:53

标签: php mysql text html-encode

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

我应该在PHP中使用哪个进程将其存储在我的数据库字段(这是一个'text'字段)中?我应该使用PHP的html_encode还是其他类似的东西?

三江源。

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

5 个答案:

答案 0 :(得分:5)

使用mysql_real_escape_string()

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

这应该有效。

答案 1 :(得分:4)

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

你应该,不,让我们说,必须然后在HTML页面上显示数据时对数据进行html编码!这将导致危险的HTML或Javascript代码无用,因为数据中的HTML标签将不再被浏览器识别为HTML标签。

当您允许用户在其中发布带有HTML标签的数据时,此过程会稍微复杂一些。然后,您必须跳过输出编码,转而使用输入消毒功能,根据您的需要可以选择复杂(允许使用标签)。

答案 2 :(得分:3)

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

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

答案 3 :(得分:3)

以下内容应该有效:

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

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

答案 4 :(得分:1)

除了格式化之外,要正确存储用户文本,您只需使用nl2br($inputtext)将所有换行转换为中断。过滤输入后执行此操作。