如何附加MYSQL JSON

时间:2019-04-09 18:10:18

标签: php mysql serialization

当我运行从办公室选择类型时,我的数据库中有以下内容;

+--------------------------------------------------------+
| type                                                   |
+--------------------------------------------------------+
| a:2:{i:0;s:16:"Shared Workspace";i:1;s:9:"Workshops";} |
+--------------------------------------------------------+

如何为其他类型的办公室添加额外的JSON值。基本上,我希望它添加类型“ Private Offices”。因此,我的数据库中的值将如下所示:

+-----------------------------------------------------------------------------------+
| type                                                                              
+-----------------------------------------------------------------------------------+
| a:3:{i:0;s:16:"Shared Workspace";i:1;s:9:"Workshops";i:2;s:15:"Private Offices";} |
+-----------------------------------------------------------------------------------+

1 个答案:

答案 0 :(得分:3)

这不是JSON格式。看起来像PHP serialize()函数的输出。

没有SQL函数可以将值附加到序列化的PHP数据中。您应该将其提取到PHP应用程序中,将其解序列()到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]);