我有大约一千个条目,在整个条目中都包含反斜杠。有一种简单的方法,或者可以从每个条目中删除特定字符的脚本吗?
答案 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, '\\', '')