CodeIgniter3表单提交无报错但数据未插入数据库问题求助
核心错误&修复方案
你当前最明显的问题是视图文件的表单属性写错位了:你把action、method属性写到了第一个<div class="form-group">标签上,没有绑定到<form>标签,导致表单默认以GET请求提交到当前页面,根本不会请求你的admin/add接口,也不会传递POST数据。
直接修改admin-index.php的表单部分即可:
<!-- 把action、method属性移到form标签上 --> <form action="<?php echo base_url(); ?>admin/add" method="POST"> <div class="form-group"> <label>First Name</label> <input type="text" name="firstName" class="form-control"> </div> <!-- 后续其余div代码无需改动 --> <button type="submit" name="submit" value="submit" class="btn btn-primary">Submit</button> </form>
其他排查思路
如果修复表单后还是无法插入数据,按以下优先级排查:
- 先确认POST数据是否正常传到控制器,在控制器
add方法最开头加调试代码,提交表单看输出是否有你填的内容:public function add() { var_dump($this->input->post());exit; // 原有代码 } - 确认数据库表
tblaccount的字段名和你插入数组的键名完全一致,大小写、拼写都不能有偏差 - 在模型插入语句后打印执行的SQL,确认生成的插入语句是否正确,复制到数据库手动执行看是否报错:
public function add_user($data) { $this->db->insert('tblaccount', $data); echo $this->db->last_query();exit; } - 检查是否开启了CSRF保护,如果开启需要在表单里加CSRF隐藏字段,或者临时修改配置文件里
$config['csrf_protection'] = false测试 - 可以增加插入结果判断,确认插入操作是否成功:
模型修改:
控制器修改:public function add_user($data) { return $this->db->insert('tblaccount', $data); }$res = $this->Admin_model->add_user($newData); var_dump($res);exit; // true为插入成功,false为插入失败
注意:你当前代码是直接存明文密码,正式上线前一定要对密码做哈希加密处理,不要明文存储敏感信息
内容的提问来源于stack exchange,提问作者jesse emmanuel basco
相关产品推荐
相关产品推荐

