php - Codeigniter 大表单插入
问题描述
我有一个包含 120 个字段的表单要插入数据库。表单插入良好,我使用的方法如下:我从控制器中的视图中获取所有字段,并将数组($postdata)传递给模型文件以插入。
**View**
$postdata = array(
'firstname' => $this->input->post('firstname'), //1st field
'lastname' => $this->input->post('lastname'), // 2nd field
'age' => $this->input->post('age'),
....
....
'test' => $this->input->post('test') // 120th field.
);
$this->Form_Model->insertdata($postdata);
**Model:**
function insertdata($data = array()) {
$sql_query = $this->db->insert('form_insert', $data);
redirect('Form');
}
我的问题是有没有更好的插入方式。这种方法感觉有点重复。
解决方案
如果您只是想获取所有提交的数据的数组,您可以这样做:
$postdata = $this->input->post();
这意味着,从表单提交的所有数据都将在此数组中。如果你想从这个数组中删除任何特定元素,你可以使用unset()
.
例如,您可能将提交按钮命名为“submit_btn”,如下所示:
<input type="submit" name="submit_btn" />
那么这个值就会出现在上面返回的数组中。您可以像这样删除它:
$postdata = $this->input->post();
unset( $postdata['submit_btn']);
顺便说一句,我有几个建议。逻辑部分在 a 中完成Controller
(您错误地将其称为View
)。AView
仅用于显示。并且Model
是用于数据库通信的。
此外,最好对您通过表单提交从用户收到的输入进行一些验证。我们甚至可能不知道他们发送的是什么数据!
redirect()
并将您在 中使用的移动到Model
您Controller
尝试调用该insertdata()
方法的位置。在那里Model
,您只需返回一个值(true 或 false 或其他)并在内部执行业务逻辑Controller
你把一切都搞混了。这就是为什么我想给你一些建议来帮助你。
希望能帮助到你 :)
推荐阅读
- c# - RegistryKey 更改为新的 csproj 格式
- json - 来自 txt 文件的 Grep(JSON 格式)
- nginx - 无法从对等 v-net 连接到专用 v-net 上的 AKS 内部入口
- javascript - 通过javascript中的字符串数组从对象中提取键和值
- java - Java JSlider:方法 setLabelTable 不推荐使用字典,我还应该使用什么?
- java - Java使用单独的任务异步同步两个集合中的项目
- html - 文本图像响应
- javascript - 滚动在 Firefox 中不起作用,我有一个表格,当用户向下滚动时会加载更多,但它会在 Firefox 中停止
- powerbi - 日期间隔中的剩余工作日
- firebase - 不使用拉刷新进行更新,而是重复旧数据