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

6
我在我的网站上有一个文本框,需要将用户输入的任何内容存储到我的数据库中,并在以后检索。我需要完全按照用户输入的方式存储它,包括特殊字符、换行符等。
在PHP中,我应该使用什么过程将其存储在我的数据库字段中(这是一个“文本”字段)?我应该使用PHP的html_encode或类似的东西吗?
谢谢。
编辑:我还需要正确存储格式,即制表符和多个空格。
5个回答

5

使用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或Javascript代码无效,因为数据中存在的HTML标签将不再被浏览器识别为HTML标签。

当您允许用户发布包含HTML标记的数据时,该过程会变得更加复杂。然后,您必须放弃输出编码,而选择输入净化,这取决于您的需求(例如允许的标记)可能会非常复杂。


3
以下应该有效:
if (get_magic_quotes_gpc()) {
  $content = stripslashes($content);
}
$content = mysql_real_escape_string($content);

如果你的列是utf8,那么特殊字符就不会成为问题。一旦你正确格式化了内容,就可以使用标准的插入方法将其提供给mysql。

3

你不必将其编码以便将其存储在mysql中。

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


1
为了正确地存储用户文本以及格式,您需要在过滤输入后将所有换行符转换为 nl2br($inputtext)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接