【问题标题】:Search and replace serialised text in a column in mysql (without unserialising?)在 mysql 的列中搜索和替换序列化文本(不反序列化?)
【发布时间】:2014-01-22 23:01:52
【问题描述】:

我正在尝试根据特定搜索条件搜索和替换 mssql 中的列中的特定文本。我只是弄错了。

我尝试使用此线程中的 2 个示例,但无法正确使用 - Updating serialised array in mysql (without unserialising?)

注意wp_postmeta 是表名,meta_value 是列名

SET @search = 'View Map +';
SET @replace = 'View New Map2 +';
UPDATE wp_postmeta SET meta_value=REPLACE(meta_value, CONCAT('s:', 
LENGTH(@search), ':"', @search, '"'), CONCAT('s:', LENGTH(@replace), ':"', 
@replace, '"')) WHERE `meta_id` = 170442

我收到此错误

MySQL returned an empty result set (i.e. zero rows)

我也尝试过第二个选项,但仍然失败

$old = 'View Map +';
$new = 'View New Map2 +';

$search = 's:' . strlen($old) .':"' . $old . '"';
$replace = 's:' . strlen($new) .':"' . $new . '"';

$query = "UPDATE wp_postmeta SET meta_value=REPLACE(meta_value, 
'{$search}','{$replace}') WHERE `meta_id` = 170442 and 
meta_value LIKE '%View Map +%';";

我收到了这个错误

$old = 'View Map +';

MySQL 说:

Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near '$old = 
'View Map +''at line 1 

有什么想法吗?

谢谢

【问题讨论】:

    标签: search serialization replace deserialization


    【解决方案1】:

    我对此一头雾水,但上面的选项 1 现在可以正常工作了。我在搜索和替换框中没有整个数组,而是其中的一部分,因此出现错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 2012-03-17
      • 2011-03-17
      • 1970-01-01
      相关资源
      最近更新 更多