2014-11-04 45 views
0

我有一个表单,我也可以写HTML标签。我必须保存这个textarea保存每一个HTML标签。因此,这里的代码:MySQL API - 存储HTML标签

foreach($_POST["comment"] AS $key => $value) 
{ 
    mysql_query("UPDATE comments SET title= '".$value["title"]."', comment = '".$value['comment']."' WHERE id = '".$value["id"]."'"); 
} 

当我试图挽救这个:

<b>Hello</b> 

在MySQL中我得到这样的结果:

&lt;b&gt;Hello&lt;/b&gt; 

我必须保持每一个HTML,因为它是。如果我写<b>我必须在数据库中确切地保存<b>。我尝试了转义,html特性,引号,删除斜杠(...),但这个人继续以错误的方式保存所有内容。

p.s.在你提问yes之前,description字段是使用UTF-8编码的TEXT tupe。

+1

MySQL不会那样做编码。你的问题在别的地方。 – 2014-11-04 00:47:54

+0

您是否尝试过htmlspecialchars? – Mark 2014-11-04 00:48:38

+0

为什么你想要数据库保存
。将它保存为tg代码格式非常好。 – 2014-11-04 00:50:06

回答

0

您是否尝试过使用http://php.net/manual/en/function.htmlspecialchars-decode.php上述值?这应该完全符合你的要求。

试运行:

$sStr = '&lt;b&gt;Hello&lt;/b&gt;'; echo htmlspecialchars_decode($sStr);

,这将是正确编码。将其提供给数据库将存储正确的值。

此外,但这是一个侧面的通知,你真的不应该保存后验证输入数据。我认为这只是一个简单的例子,而不是生产代码?但是,只是一个建议。

+0

是的!这是解决方案。我需要像你在另一个消息中所述的那样,与htmlspecialchars相反。谢谢。 – user1274113 2014-11-05 14:10:03

+0

非常欢迎。为了将来的参考,请注意根本原因。所有发布的数据都将进行urlencoded,这将解释您首先遇到的情况。快乐的编码! – Digitalis 2014-11-06 18:50:20

-1

您需要转义条目。如果你使用的是mysql方法,你需要mysql_escape_string函数,如:

$string = mysql_escape_string("<br>Hello</br>"); 
+0

正如Mike所提到的,mysql_real_escape_string不会将html实体转换回utf字符。它只会添加转义字符。 http://php.net/manual/en/function.mysql-real-escape-string.php – Digitalis 2014-11-04 01:07:57