在mysql的列中搜索并替换序列化文本(不反序列化?)

时间:2014-01-22 23:01:53

标签: search serialization replace deserialization

我正在尝试根据特定搜索条件搜索并替换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 

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我正在摸不着头脑,但上面的选项1现在正常工作..我没有在搜索和替换框中的整个数组,但部分因此错误