Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Aktualizacja serializowanej tablicy w mysql (bez odserializowania?)

Jeśli po prostu wyszukasz i zamienisz w ten sposób, sprawisz, że serializowane dane nie będą dostępne. Oto, co musisz zrobić:

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

Zastąp $old i $new z bieżącym i docelowym adresem URL, uruchom skrypt i wykonaj wygenerowane $query .

Oto czyste rozwiązanie 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, '"'));

Zauważ, że zastąpi to KAŻDE wystąpienie szukanego ciągu w zserializowanej tablicy. Jeśli chcesz zastąpić konkretny klucz, musisz być bardziej, hm, konkretny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie dynamiczne wykorzystujące zmienną liczbę argumentów IN (p1, p2, p3)

  2. Czy MySQL obsługuje datę historyczną (np. 1200)?

  3. Nie widać wartości pola MySQL BIT podczas korzystania z SELECT

  4. Jak wstawić francuskie znaki w tabeli mySQL DB?

  5. Jak uruchomić zapytanie sql w php?