Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将动态表单数据插入数据库。PHP_Php_Mysql_Codeigniter - Fatal编程技术网

将动态表单数据插入数据库。PHP

将动态表单数据插入数据库。PHP,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有个问题,我正在创建一个非常复杂的表单。表单的某些部分是动态创建的。假设您从下拉列表中选择了某个选项,则会向表单中注入额外的字段 存储这些数据的最佳方法是什么?我想尝试不使用多张桌子就离开。因为我使整个应用程序变得更加复杂 我想在我的模型中将所有可能的值初始化为“0”。然后用post数据覆盖它们,并将整个数组存储在表中。有人看到这种方法有什么问题吗?很大程度上取决于您以后要如何处理表单数据,以及多久处理一次 序列化单字段 在最简单的用例中,您可以对所有数据进行base64_编码(序列化($da

我有个问题,我正在创建一个非常复杂的表单。表单的某些部分是动态创建的。假设您从下拉列表中选择了某个选项,则会向表单中注入额外的字段

存储这些数据的最佳方法是什么?我想尝试不使用多张桌子就离开。因为我使整个应用程序变得更加复杂


我想在我的模型中将所有可能的值初始化为“0”。然后用post数据覆盖它们,并将整个数组存储在表中。有人看到这种方法有什么问题吗?

很大程度上取决于您以后要如何处理表单数据,以及多久处理一次

序列化单字段 在最简单的用例中,您可以对所有数据进行base64_编码(序列化($data))并将其放入数据库中的一列中

  • 简单的
  • 快速插入
  • 易于添加/更改输入字段
  • 搜索值困难且缓慢(尤其是在规模上)
  • 如果需要对数据进行系统性更改,则很难通过编程方式进行更新
  • 如果您总是从数据库中提取所有数据,并且从不通过序列化字符串中的数据缩小sql查询范围,那么这将是一个完美的选择
元数据表 添加第二个元数据表可以提供更多的灵活性。第二个表将包含对主表单提交的外键引用、元数据名称和值。这允许非常灵活的多对一关系,您可以轻松地存储、搜索和操作这些关系。你可以在wordpress中看到这样的例子

  • 2张桌子,但仍然很简单
  • 易于添加/更改输入字段
  • 通过sql进行更好的搜索
  • 更容易系统地更新
  • 如果您不总是获取所有数据,或者必须按表单数据缩小搜索范围,那么这将是一个完美的选择

和一个不同的方向——如果你发现自己处理了很多这种类型的数据,你也可以考虑查看基于文档的数据库,比如MangGDB或CoucDB。

< P>在模型中使用多个表的必要性不取决于你必须存储多少数据(多少个字段)——这取决于模型的逻辑。所以,如果在你的模型中使用关系(f.e.1:n,n:m)有一个合理的理由,就这么做吧

如果您在创建模型时不遵循基本规则,并尝试使用f.e.将所有数据存储在一个表中,尽管它应该分为多个表,您很快就会后悔。将来对代码的任何更改都将花费您更多的工作,并且在某些情况下,您将无法理解自己的代码,必须重新编写代码,这次是按照规则进行的;)

如果开发正确的模型需要花费大量的工作(最近我花了两个多星期的时间开发了我的模型),也不用担心,这真的很有意义,因为之后你可以使用一个开发良好、计划周详的模型更快、更有效地工作

另一方面,有些情况下,在一个表中存储100多个字段是有意义的,这取决于逻辑。因此,如果您提供一些示例,也许可以说您是否应该使用一个或多个表