LINUX.ORG.RU

Головоломка с phpmyadmin и mysql

 , , ,


0

1

Всем привет)) Редко приходится работать с SQL, может кто-то подскажет ? Думаю это какая-то очевидная вещь, я просто не могу догнать как это делать.

Есть таблица wp_postmeta в которой есть столбец meta_key, это название поля, и есть meta_value, это у нас значение, которое нужно менять.

Записи с meta_key «tm_video_url» содержат просто ссылку вида https://www.youtube.com/watch?v=W_uUW9_u8 (может где-то есть http без s), так вот, нужно запросом найти все такие записи и добавить спереди следующее:

a:1:{s:8:"td_video";s:43:"

а в конце

";}

Чтобы вышло в итоге:

a:1:{s:8:"td_video";s:43:"https://www.youtube.com/watch?v=W_uUW9_u8";}

Это вообще возможно?


a:1:{s:8:"td_video";s:43:"


Вот это вот заклинание, это не просто так, это начало массива сериализованного php-функцией serialize.
А подстрока «s:43» указывает на то что после неё начнётся строка длинной 43 символа. Так вот, если значение meta_value будет не 43 символа то десереализовать такой массив не получится.

Если таких записей не какое-то безумное количество, то я-бы отредактировал их из того-же PHP предварительно проверяя исходные значения.

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Хотя вроде можно и средствами SQL воспроизвести валидный массив.

MrClon ★★★★★
()
console.log('https://www.youtube.com/watch?v=W_uUW9_u8'.length);
41


Соответственно, если ты повсюду установишь 43 - то unserialize потом не сработает

kiotoze ★★★★
()

Вобщем правильно говорят, нужно как-то так

concat("a:1:{s:8:\"td_video\";s:\"", length(fieldname), ":\"", fieldname, "\";}")

goingUp ★★★★★
()
Ответ на: комментарий от anonymous

а, да, ещё blah//16#именно16/blahblah?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.