将HTML插入数据库

时间:2011-10-21 09:39:05

标签: php mysql

我将数据插入到包含一些基本html标签,双引号和单引号的表中。

我使用以下行来处理数据:

htmlentities(($_POST[content]), ENT_QUOTES);

问题在于,当我选择此数据将其重新显示在屏幕上时,显示实际的html标签而不是呈现html,即如果我使用<b>bold</b>标签,则将其显示为文本而不是使该标签内的文字粗体。如果我不使用上述行,即

htmlentities(($_POST[content]), ENT_QUOTES);

然后我无法将数据插入数据库,因为数据可以包含单引号和双引号。

我该如何处理这个问题?

基本上,我应该能够将数据插入到数据库中,其中单引号或双引号不应该导致问题。当将数据渲染回屏幕时,它应该呈现html标签,因为它们应该被渲染到浏览器中,并且引号应该在被渲染回屏幕的文本中显示为引号。

4 个答案:

答案 0 :(得分:3)

您正在将数据插入数据库,而不是插入HTML文档。不要使用htmlentities。使用数据库提供的任何方法来转义内容。这应该是使用绑定参数的东西。 Bobby-tables explains a number of different methods

答案 1 :(得分:2)

$html = mysql_real_escape_string($html);

http://php.net/manual/en/function.mysql-real-escape-string.php

在使用此功能之前,请确保已建立正确的mysql连接mysql_connect

答案 2 :(得分:0)

你必须使用strip_tags($str); 如果你想删除只有html标签..单引号或双引号将保持... 但是你的问题是......你在字符串上放了很多空格,这样你就可以完全使用use strip_tags($str);

答案 3 :(得分:-1)

将如此多的HTML代码放入mysql表中对我来说似乎是一个丑陋的方法,如果你要添加一个帖子就需要它,但是如果你要保存一个你可以重新填充的页面,你可以考虑另一种方式。

这是我的方法:

  1. 清除所有HTML代码
  2. 将有用的数据放入数组(序列化数组)
  3. 将数组保存到数据库
  4. 调用页面时重新填充数组(反序列化数组)
  5. 这使我保存了&lt; 1kb数据而不是125kb

    如果您使用模板化系统,这是一个很好的方法。