我有大约一千个条目,它们在整个条目中都包含反斜杠。有没有一种简单的方法,或者一个脚本可以从每个条目中删除特定的字符?
替换应该可以完成您的工作。
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
进行检查,看看结果是否符合您的预期。
由于magic_quotes
打开,数据库中可能添加了反斜杠以转义引号。你不应该把它们从那里拿走。
您应该使用stripseashes($yourvalue)PHP函数来显示页面上数据库中的值。
我没有足够的声誉来评论@Enrico的解决方案(是的,我知道这是一个两年前的问题,但在谷歌结果中很高),但我可以确认他的查询有效。此外,您可以使用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
。
在您的控制器中,您可以添加:
public function init()
{
$this->view->setEscape('stripslashes');
}
这将在显示时转义斜线。
如果你想在插入数据库时删除斜线,你可以使用:
stripslashes($your_value)
如果你只想从当前数据中删除斜线,你可以这样做:
UPDATE table_name SET col=REPLACE(col, '\', '')