Замена элемента массива, хранящегося в ячейке БД

79
08 ноября 2021, 15:00

У меня в в БД данные хранятся в виде

{"a":"1","b":"2","c":"3","d":"4"}

Если я правильно понимаю, то это строка ?

Существует ли способ как мне заменить значение только 1 элемента этого массива?

На данный момент я представляю себе это только так: Вытаскиваю всю строку, преобразую ее в массив, меняю то что мне нужно, преобразую обратно в строку и запихиваю в ячейку обратно.

Можно ли сделать это проще?

Answer 1

начиная с версии 5.7.8 в mysql появилось множество функций для работы с JSON.
вам, видимо, пригодятся функции JSON_SET или JSON_REPLACE, и в общем случае запрос на обновление поля a объекта в столбце f будет иметь вид:

UPDATE table1 
SET f = JSON_SET(f, '$.a', 'new value')
WHERE ...
READ ALSO
Как поверх pdf вывести надпись на кирилице? tfpdf, fpdi

Как поверх pdf вывести надпись на кирилице? tfpdf, fpdi

Как по нажатию на кнопку в новом pdf вывести дату и содержимое файла filepdf с кирилической записью? Нашел варианты которые работают по отдельности,...

136
PHP Fatal error: Cannot redeclare ihc_init() Как исправить?

PHP Fatal error: Cannot redeclare ihc_init() Как исправить?

Появились ошибки на сайтеПонадобилось при регистрации на сайте загружать изображение, но при попытке загрузить получаю ошибку ERROR: Internal...

108
Yii2 , Rbac, как правильно вывести имя роли d GridVIew

Yii2 , Rbac, как правильно вывести имя роли d GridVIew

Я вывожу таблицу, и вывожу в ней также роль пользователя

113
Не выводить повторяющиеся значения [MySQL]

Не выводить повторяющиеся значения [MySQL]

В базе данных есть 5 строк, с полем description(описание)В каждой из строк в поле description есть хэштег "#istanbul"

131