I have a params column in my MySQL database containing this: '{"usergroup" : "1", "language" : "ENG"}';
. Can I change only the language value ENG to GER in just 1 step using a standard PDO update?
Obviously, I could just SELECT
the whole content of my table cell '{"usergroup" : "1", "language" : "ENG"}';
, decode it with json_decode
, change ENG
to GER
and UPDATE
the table cell in a second step.
I’m looking for a shortcut that allows me to UPDATE
only ENG
to GER
without touching the other data or decode/encode the whole data set.
Advertisement
Answer
You can use the JSON_REPLACE
function for this.
UPDATE `MyTable` SET `json` = JSON_REPLACE(json, '$.language', 'GER') WHERE ...
Here is an overview of other JSON manipulation functions: https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html.