У меня есть следующее в моей базе данных, когда я запускаю ВЫБЕРИТЕ тип ИЗ офиса;
+--------------------------------------------------------+
| type |
+--------------------------------------------------------+
| a:2:{i:0;s:16:"Shared Workspace";i:1;s:9:"Workshops";} |
+--------------------------------------------------------+
Как я могу добавить дополнительное значение JSON для другого типа офиса. В основном я хотел бы добавить тип «Личные кабинеты». Таким образом, значение в моей БД будет выглядеть так:
+-----------------------------------------------------------------------------------+
| type
+-----------------------------------------------------------------------------------+
| a:3:{i:0;s:16:"Shared Workspace";i:1;s:9:"Workshops";i:2;s:15:"Private Offices";} |
+-----------------------------------------------------------------------------------+
Вы должны прочитать его с помощью PHP, вызвать unserialize()
, поместить новое значение в массив, снова сериализовать его, а затем обновить БД.
Это не формат JSON. Это похоже на вывод функции PHP сериализовать().
Нет функции SQL для добавления значений к сериализованным данным PHP. Вы должны загрузить его в приложение PHP, unserialize() в массив PHP, затем добавить данные в массив PHP и обновить их обратно в базу данных.
Что-то вроде следующего (некоторые детали были опущены, например условия WHERE для конкретной строки, на которую вы ссылаетесь).
<?php
$pdo = new PDO(...);
$typeSerialized = $pdo->query("SELECT type FROM office WHERE ...")->fetchColumn();
$typeArray = unserialize($typeSerialized);
$typeArray[] = "Private Offices";
$typeSerialized = serialize($typeArray);
$stmt = $pdo->prepare("UPDATE office SET type = ? WHERE ...");
$stmt->execute([$typeSerialized]);
Это не JSON, это формат PHP
serialize()
.