双重mysql_real_escape_string插入新行字符。如何获得新的换行符?

时间:2010-07-03 14:00:44

标签: php mysql html

我有一个textarea字段,它插入到一个可能包含换行符的mysql数据库中。 textarea数据意外地经历了两个mysql_real_escape_string函数。因此,现场数据的换行位现在存储为“\ r \ n”而不是实际的新行,因为它已被双重转义?

现在当写回textarea html字段进行编辑时,会显示“\ r \ n”而不是新行。

问题:如何纠正这种情况,以便这些实际上再次成为新线?

4 个答案:

答案 0 :(得分:4)

您可能使用mysql_real_escape字符串两次转义 - 作为输入过滤器(错误!)和SQL数据准备。你必须摆脱第一个。

或者一次,作为输入过滤器,然后使用预准备语句进行查询。摆脱第一个。

答案 1 :(得分:2)

你绝对应该解决导致双重逃逸的情况。

对已经处理过的内容进行快速修复

str_replace("\\r\\n", "\r\n");

答案 2 :(得分:-1)

为了让你的原件回来,你必须反过来。创建一个脚本,从表中选择现有行,并且不转义输入,更新列值。实质上,这将存储在单个(正确)转义的输入中。

答案 3 :(得分:-1)

试用此代码

$tval = str_replace("\\r\\n", "\r\n",mysql_real_escape_string(trim($tval)));