【问题标题】:Search and replace serialized object in phpMyAdmin [duplicate]在phpMyAdmin中搜索和替换序列化对象[重复]
【发布时间】:2019-10-03 18:47:26
【问题描述】:

我需要删除特定元键的特定元值。该表是post_meta。元键是awards。而我要搜索和替换(擦除)的元值是:

a:1:{i:0;s:0:"";}

这个值应该是空白的,而不是包含那个空的序列化数组。

我尝试使用这个查询:

update wp_postmeta 
   set meta_value = replace(meta_value,'a:1:{i:0;s:0:"";}','')
 where meta_key = 'awards'

但我收到此错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''a:1:{i:0)' 附近使用正确的语法

我认为错误是因为我正在搜索的文本包含引号和符号。如何正确制定查询?

谢谢!

根据需要编辑以添加上下文:我使用 CSV 将 10,000 个帖子导入数据库。除了这个对象/数组a:1:{i:0;s:0:"";}在这个特定的元键不存在值时作为元值导入之外,所有的工作都很好。我需要这个值是空的,所以现在我想从数据库中删除它出现的任何地方。

【问题讨论】:

  • " 我怎样才能正确地制定查询?" 无论如何都不是更新select id, meta_value from meta_key where = 'awards' 使用循环使用 PHP 反序列化检查值如果匹配则更改值然后更新对表的总序列化值..
  • 我感觉你的转义没有像你预期的那样工作。
  • @tadman Hiya。我注意到你之前所做的编辑。您似乎对 # 符号有疑问。诀窍是缩进和逃避它。 ;-) 我重新编辑了。
  • 您的查询很好。实际运行它而不是执行“模拟查询”,它应该可以工作。
  • 天哪!我不认为问题只是模拟查询按钮。我以为我是负责在运行前对其进行测试。

标签: mysql csv import


【解决方案1】:

错误表示转义;。喜欢:

set meta_value = replace(meta_value,'a:1:{i:0\;s:0:\"\"\;}','')

【讨论】:

  • 谢谢。这段代码我仍然遇到同样的错误。
  • ; 不是字符串中的神奇字符。
  • @tadman 你能解释一下你的意思吗? meta_value 是a:1:{i:0;s:0:"";},我需要删除整个内容。
  • 我的意思是这不应该是一个问题,也不应该需要转义。
猜你喜欢
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 2013-12-03
  • 2020-03-13
  • 1970-01-01
相关资源
最近更新 更多