【发布时间】:2015-06-25 14:33:28
【问题描述】:
从 JSON 对象解码我想通过 PHP 将关联数组插入 MySQL。
我发现几个例子已经喜欢 https://www.daniweb.com/web-development/php/threads/381669/json-to-mysql-with-php 处理这样的一次性导入 - 也使用未知键。
但在我的情况下,我需要一次又一次地插入(从这个关联数组)到同一个表(不先删除并重新创建这个表),并且随时可能在数组中出现新的键,这也需要反映作为 MySQL 表中的新列(全部定义为“varchar(255)”)。
所以基本上在插入之前,需要检查现有列并在需要时补充新列。
我现在搜索了一段时间,但没有找到以前做过同样事情的人,简直不敢相信我是第一个需要这个的人。 :-)
有谁知道巧合的例子吗?
提前致谢!
【问题讨论】:
-
可以先通过这个方法检查该列是否存在:stackoverflow.com/a/5943905/2136840。您也可以使用
SHOW COLUMNS,尽管这是特定于 MySQL 的,因此不可移植。要创建列,php 脚本使用的 db 用户需要ALTER权限,然后您将使用ALTER TABLE创建列。我不确定您的网站/脚本的用途,但这需要为该用户提供大量访问权限,这可能是不可取的。 -
你为什么不能使用
id|key|value表,它可以正确地表示这种不同的结构化数据集? (那时访问它的工作量几乎可以忽略不计)。或者将无关/稀有/非标准字段仅存储在 JSON blob 旁边的标准化列方案中不是更好吗? (在应用逻辑中也很容易重组)。