【发布时间】: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。我注意到你之前所做的编辑。您似乎对
#符号有疑问。诀窍是缩进和逃避它。 ;-) 我重新编辑了。 -
您的查询很好。实际运行它而不是执行“模拟查询”,它应该可以工作。
-
天哪!我不认为问题只是模拟查询按钮。我以为我是负责在运行前对其进行测试。