Замените ключ-значение в столбце типа данных JSON в mysql
Я пытаюсь понять, как я могу заменить или отредактировать ключ-значение внутри массива JSON
В основном у меня есть таблица под названием
Bills
эта таблица содержит несколько столбцов, среди которых есть столбец типа JSON, который содержит массив для products
или items
в настоящее время bill
формат массива таков:-Array ( [0] => Array ( [items] => [{"0": "1", "1": "o4", "2": "Efexor", "3": "Eklil", "4": "1", "5": "30", "6": "15", "7": "Phezer", "8": "Venlafaxine", "9": "", "10": "0", "11": "2020-03-25", "12": "2021-08-25", "13": "1", "14": "0", "15": "0", "16": "caps", "17": "..\\upload\\Efexor.jpg", "id": "1", "qty": "15", "Sale": "1", "name": "Efexor", "bonus": "0", "price": "30", "company": "Phezer", "draftid": "1", "discount": "0", "imageurl": "..\\upload\\Efexor.jpg", "ownedcom": "Eklil", "packsize": "0", "codenumber": "o4", "chemicalcom": "Venlafaxine", "dosage-form": "caps", "concentration": "", "expirationdate": "2021-08-25", "productiondate": "2020-03-25"},
Итак, как вы можете видеть, массив содержит информацию о таких элементах, как (название компании..и т. д)
то, что я пытаюсь сделать, это заменить конкретный
key-value
например, Price
ключЧто я уже пробовал:
я попытался использовать некоторые из запросов JSON, такие как (JSON_search, JSON_replace,...другие), поэтому я создал метод класса для его обработки :-
public function AlterJSON($item,$key,$newValue){ if($this->connected === true){ try{ $JsonItems = $this->connection->prepare("UPDATE `bills` SET `items` = JSON_REPLACE(`items`, '$.name', ':value') WHERE JSON_CONTAINS(`items`, ':item', '$.name');"); $JsonItems->bindParam(":item",$item); $JsonItems->bindParam(":value",$newValue); $JsonItems->execute(); echo 'Value for The'.$key. 'Changed to'. $newValue; } catch(PDOException $e){ if($this->errors === true){ return $this->error($e->getMessage()); }else{ return false; } } } }