【问题标题】:Double Quotes in MySQL UPDATE QueryMySQL UPDATE 查询中的双引号
【发布时间】:2016-05-13 11:15:30
【问题描述】:

我正在使用以下answer 来更改 MySQL 表中多条记录中的文本字段。

我需要更改每条记录的一小部分,其中 URL 出现双引号。

示例记录:

a:32:{s:5:"title";s:23:"Texas"footertext";s:220:"<a class=\"footerlink\" href=\"%ORIGINALPOSTURL%\" target=\"_blank\" rel=\"nofollow\">CLICK HERE FOR MORE INFO &amp; PHOTOS</a>}

我想删除target=\"_blank\"

由于在我试图替换的目标值中使用了双引号,我没有更新我怀疑的任何记录。我试过带和不带反斜杠。您在此处看到的双引号两侧的这 4 个反斜杠在 phpMyAdmin 中执行 SELECT 时起作用。我也尝试过更新零记录的单个反斜杠。

这些都不起作用

UPDATE wp_autoblog SET feed_meta = replace(feed_meta,'target=\\\\"_blank\\\\"','');

UPDATE wp_autoblog SET feed_meta = replace(feed_meta,'target=\"_blank\"','');

【问题讨论】:

  • 你能展示一个你想要替换的字符串示例吗?
  • 这是数据库字段中的准确示例:点击这里了解更多信息和照片
  • 单反斜杠应该可以工作。这是一个原始查询还是输入到您的 PHP 代码中的内容?
  • 我将其直接粘贴到 myPHPAdmin 中...也尝试过,但没有成功
  • 正确的做法是将记录加载到 PHP 脚本中,反序列化数据,修改数据,再次序列化,然后将其存储回来……(当然,取决于关于要处理的记录数量,可以执行任何地方,从精细到糟糕,到脚本被定义的最大运行时设置杀死……)

标签: mysql


【解决方案1】:

事实证明 phpMyAdmin 在 Web 浏览器中显示数据时插入了一个额外的反斜杠。

我最终对表进行了 .sql 转储,我尝试替换的数据是这样包装的:target=\\\"_blank\\\"

我发出了以下命令,效果很好。

UPDATE wp_autoblog SET feed_meta = REPLACE( feed_meta,  'target=\\\"_blank\\\"',  '' )

【讨论】:

    猜你喜欢
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    相关资源
    最近更新 更多