-2
私は次のことに固執しています:私はmysqlデータベース(5.7)を持っています。 json-data-entryを更新したいと思います。PHP mysql json_set
これは、データベース内の私のデータがどのように見えるかです:
{
"version": {
"0": {
"value": "1.9.6.81"
}
}
}
私はコマンドラインから直接SQLでこのフィールドを更新しようとすると何も問題はありません。
update item set elements = JSON_SET(elements, '$."version"."0"."value"', "1.9.8.40") where name like 'Client XZY';
しかしとき私はPHPでそれを試して、私は複数の引用符と二重引用符でいくつかの問題があります。
$connection = new mysqli('localhost', 'user', 'password');
$updateSql = "update item set elements = JSON_SET(elements, '$."version'.'0'.'value"', '1.9.8.20') where name like 'Client XYZ';';
if($connection->query($updateSql) === TRUE){
echo 'good :) ';
}
else{
echo 'bad :(';
}
作業です。つまり、あなたのPHP文字列リテラルが '' 'で始まっている場合は、その文字列内のすべての' ''を '\"として書く必要があります。 – deceze
はバージョンが可変であるような入力要素を提供しますか? –
はこの更新文字列で試行され、成功しません '$ updateSql = "アイテムセット要素を更新する= JSON_SET(要素、' $。\"バージョン\ "値\" '、' 1.9.8.20 ')名前は'クライアントXYZ ' ; ' –