sql >> Database teknologi >  >> RDS >> Mysql

Opdatering af serialiseret array i mysql (uden at afserialisere?)

Hvis du blot søger og erstatter på den måde, vil du gøre de serialiserede data ubrugelige. Her er hvad du skal gøre:

$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}');";

Erstat $old og $new med dine nuværende og mål-url'er, kør scriptet og kør den genererede $query .

Her er en ren SQL-løsning:

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, '"'));

Bemærk, at dette vil erstatte HVER forekomst af søgestrengen i dit serialiserede array. Hvis du ønsker at erstatte en specifik nøgle, skal du være mere, huh, specifik.



  1. Sådan fungerer LIKE-operatøren i MariaDB

  2. Wordpress opdatering mysql tabel

  3. Sortering af en MySQL-forespørgsel med ORDER BY eller med PHP-sorteringsfunktioner

  4. Hvordan tester man MySQL-transaktioner?