Я пытаюсь создать сценарий поиска и замены MySQL для моей таблицы db wp_postmeta.
Мне нужно найти эти поля, похожие на это.
a:2:{i:0;a:3:{s:4:"name";s:15:"Personalisation";s:4:"type";s:7:"heading";s:11:"description";s:0:"";}i:1;a:13:{s:4:"name";s:8:"Initials";s:12:"title_format";s:5:"label";s:4:"type";s:11:"custom_text";s:17:"restrictions_type";s:8:"any_text";s:11:"description";s:0:"";s:18:"description_enable";i:0;s:8:"required";i:1;s:3:"min";s:1:"1";s:3:"max";s:1:"4";s:12:"restrictions";i:1;s:5:"price";s:1:"3";s:10:"price_type";s:14:"quantity_based";s:12:"adjust_price";i:1;}}
и замените "required";i:1;
на "required";i:0;
Я использую phpmyadmin для создания и запуска скрипта, но пока я не могу получить то, что я написал, для запуска с точками с запятой.
Это то, что я придумал до сих пор;
UPDATE wp_postmeta
SET meta_value = replace(meta_value, '"required";i:1;', '"required";i:0;')
WHERE meta_key = '_product_addons';
и получите сообщение об ошибке (удаление точки с запятой исправляет это, но ничего не соответствует):
#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 ''"required")' at line 1
Я пробовал использовать \, чтобы избежать их, и это не сработало, это примерно насколько я знаю MySQL, так что надеюсь, что кто-то может помочь?
Спасибо
Хорошо, я обнаружил, что это действительно работает нормально, но не будет работать при использовании опции Simulate, может ли кто-нибудь объяснить, почему это так?
Почему бы вам не попробовать объявить поиск и замену строк как переменные? Например,
SET @search = '"required";i:1;'
, а затем выберите его и посмотрите результат, затем сделайте то же самое для строки замены и повторите попытку?