当前位置:  开发笔记 > 编程语言 > 正文

MariaDB动态列和JSON?

如何解决《MariaDB动态列和JSON?》经验,为你挑选了1个好方法。

我试图在一个列中存储JSON数据(几乎是PHP中可能是未知长度的数组),这将允许我对其进行查询.我们以此为例......

假设我有一个字段询问你喜欢什么样的运动(这是一个复选框).

[] Soccer
[] Hockey
[] Football
[] Swimming

然后将通过sports[]数组发送到PHP.然后我想把它拿到我的数据库中,看起来像

|sports|{hockey:false,swimming:true,football:false,soccer:true}|

或类似的东西,然后我可以去

SELECT COUNT(*) FROM fields WHERE hockey = "false";

我似乎无法弄清楚如何正确地做到这一点,忽略这个"例子"实际上很容易通过加入我希望使用mariadb动态列来做的事实(至少我相信这就是我想要的).我知道我可以用Postgre做到这一点.



1> Daniel W...:

一切都在这里:https://mariadb.com/kb/en/dynamic-columns/

动态列存储在实际blob列中并插入如下:

insert into data
values (data_id, user_id, COLUMN_CREATE(, , , , ...));

所以你不会在这里使用json,而是用这种方式序列化数据:

$dynamic = array()
foreach($_POST['sports'] as $sport) {
    $dynamicData[] = "'" . $sport . "'", TRUE;
}
$dynamicColumn = join(', ', $dynamicData);

会产生类似的东西

'hockey', TRUE, 'soccer', TRUE

要搜索所有行以播放足球:

... where COLUMN_GET(dynamic_blob, 'soccer' as soccer) = TRUE; 

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有