Mysql
 sql >> база данни >  >> RDS >> Mysql

Актуализиране на сериализиран масив в mysql (без десериализация?)

Ако просто търсите и замените по този начин, ще направите сериализираните данни негодни. Ето какво трябва да направите:

$old = 'http://www.google.com';
$new = 'http://www.someplace.com';

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

$query = "UPDATE config SET array=REPLACE(array, '{$search}', '{$replace}');";

Заменете $old и $new с текущия и целевия си URL адрес, стартирайте скрипта и изпълнете генерирания $query .

Ето чисто SQL решение:

SET @search := 'http://www.original.com';
SET @replace := 'http://www.target.com';
UPDATE config SET array=REPLACE(array, CONCAT('s:', LENGTH(@search), ':"', @search, '"'), CONCAT('s:', LENGTH(@replace), ':"', @replace, '"'));

Имайте предвид, че това ще замени ВСЯКО поява на низ за търсене във вашия сериализиран масив. Ако искате да замените конкретен ключ, трябва да сте повече, а, конкретни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Резултати от базата данни като обекти или масиви?

  2. PHP MySql:Отпечатване на дърво - Отметка за родителско дете

  3. PHP Вмъкване на данни от една таблица в друга

  4. MYSQL - Вътрешно присъединяване с AFTER UPDATE в таблицата

  5. Индексиране на k-d дърво?