2012-03-22 30 views
2

我有大约一千条条目在整个条目中都包含反斜杠。有没有简单的方法,或者是一个可以从每个条目中删除特定字符的脚本?删除/隐藏MySQL数据中添加的反斜杠

+0

这是服务器端语言的PHP? – 2012-03-22 01:48:20

+0

是啊,它使用php – Chris 2012-03-22 01:48:54

+0

尝试strips stripsheshes($ yourvalue)你从哪里显示数据库的价值? – 2012-03-22 01:49:43

回答

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并查看结果是否符合您的期望。

2

由于magic_quotes的原因,可能会在数据库中添加反斜杠以避开引号。你不应该从那里删除它们。

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

0

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

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

这将逸出,同时显示斜线。

如果你想删除斜线同时插入到DB你可以使用:

stripslashes($your_value) 

如果你只是想删除从当前数据斜线游马办:

UPDATE table_name SET col=REPLACE(col, '\\', '') 
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,这取决于您的环境。