PHP关联数组到MySQL表,为每个键创建一列?

时间:2011-07-27 20:18:34

标签: php mysql

基本上我正在研究一些可重用的代码。我的想法是,我想基于数据库中的一行创建一个数组,其中每列是数组的键。然后程序修改数组,添加新密钥(如果它们尚未存在于数据库中),并且在程序结束时,新数组数据将被放回数据库中,如果它们先不存在则添加任何新列。因此,在使用此可重用代码创建新程序时,您不必混淆创建所有数据库列。

我只是在寻找它是一个数组,而不是一些复杂的对象。有点像你使用$ _SESSION那样的方式。数据库不会频繁更改,我只是建议在新程序首次运行时创建表,然后不要更改(只要程序员知道他在做什么)。该阵列将被安全使用;您不会将用户输入放入$ _SESSION键,是吗?

所以,几个问题。

首先,这是一个好主意吗?

第二,我可以使用或参考任何类似的独立解决方案吗?

最后,如果我需要从头开始,有什么我应该知道如何去做吗?

非常感谢您对此技术的任何意见或了解。

3 个答案:

答案 0 :(得分:1)

好吧,如果程序员知道他将提前使用哪些列,那么他应该创建表。如果程序员知道字段被调用(它们是由用户,Web服务调用等外部力量决定的),那么你正在为一个受到伤害的重大世界打开局面。您基本上只是将所有数据完整性验证传递给外部源。

外部资源完全超出您的控制范围,并且可以执行诸如发送错误数据之类的可爱事情,特别是如果它们恰好是用户,或者由用户操作的东西,或者由人类构建的东西,或者......好......任何东西其他..

您正在谈论的其余内容(从数据库中选择,修改返回值,保存结果)可以使用称为对象关系映射的内容来完成。我可以想到PHP中的两个好的,独立的ORM系统:DoctrinePropel

答案 1 :(得分:0)

数据库结构不应经常更改,这就是您的解决方案的目的。通常创建任何给定的表只是一次查询,随着业务需求的变化,偶尔会有“更改”。在一滴帽子上允许随机的可变性听起来像是支持的噩梦。

即使您确实很容易添加/更改/删除这样的表,仍然存在实际使用新字段的所有相关开销,从现有代码中删除已删除的字段,yada yada yada。

答案 2 :(得分:0)

我同意其他人认为传统数据库表不应该这样改变。我建议你看一下像MongoDB这样的文档数据库,你可以将数组保存到数据库中,你不需要担心结构的变化。