从MySQL数据中删除/隐藏添加的反斜杠

时间:2012-03-22 01:43:51

标签: php mysql sql

我有大约一千个条目,在整个条目中都包含反斜杠。有一种简单的方法,或者可以从每个条目中删除特定字符的脚本吗?

4 个答案:

答案 0 :(得分:6)

替换应该做你的工作。

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace

UPDATE table_name SET col=REPLACE(col, '\\', '')

这应该有效。它将使用空字符串更新替换\的列。我只是不记得你是否必须使用\\\来逃避\。在运行查询之前检查它,使用SELECT col, REPLACE(col,'\\','') FROM table_name并查看结果是否符合您的预期。

答案 1 :(得分:2)

可能会在数据库中添加反斜杠,以便在magic_quotes打开时转义引号。你不应该从那里删除它们。

您应该使用stripslashes($ yourvalue)PHP函数在哪里显示页面上数据库的值。

答案 2 :(得分:1)

我没有足够的声誉对@ Enrico的解决方案发表评论(是的,我知道这是一个两年前的问题,但它在Google搜索结果中很高),但我可以确认他的查询有效。此外,您可以使用where子句来限制实际包含反斜杠的结果(对于在执行之前进行检查非常有用)。

检查:

SELECT col, REPLACE(col,'\\','') FROM table_name WHERE col LIKE '%\%' ESCAPE '|'

执行:

UPDATE table_name SET col=REPLACE(col,'\\','') WHERE col LIKE '%\%' ESCAPE '|';

escape子句用于在like子句中设置转义字符(但不包括REPLACE()函数)。由于我们正在使用反斜杠,因此我们更改了转义字符以确保获得我们想要的内容。

另请注意,您可能需要先set SQL_SAFE_UPDATES=0,具体取决于您的环境。

答案 3 :(得分:0)

在您的控制器中,您可以添加:

public function init()  
{       
       $this->view->setEscape('stripslashes');  
}

这会在显示时转义斜杠。

如果要在插入数据库时​​删除斜杠,可以使用:

stripslashes($your_value)

如果您只想从当前数据中删除斜杠,请执行以下操作:

UPDATE table_name SET col=REPLACE(col, '\\', '')