Php (CodeIgniter查询生成器)I';我得到一个数据库插入错误,即使插入过程在后台工作正常

Php (CodeIgniter查询生成器)I';我得到一个数据库插入错误,即使插入过程在后台工作正常,php,mysql,codeigniter,Php,Mysql,Codeigniter,上面是控制器中的代码段,我将数据从循环post值传递到数据库中。当我运行这个方法时,我得到一个数据库错误 “答案值”和“问题i”不能为空 尽管如您所见,我通过$value和$question变量将数据传递到这些值上。当我检查数据库时,插入过程似乎工作正常,因为我的数据被传递到表中。为什么我会出现这个错误?我如何修复它?我当前的解决方案是禁用数据库配置中的调试。谢谢。我发现数组$\u POST中的元素比循环中预期的要多得多,例如数组 public function answerSurvey() {

上面是控制器中的代码段,我将数据从循环post值传递到数据库中。当我运行这个方法时,我得到一个数据库错误

“答案值”和“问题i”不能为空


尽管如您所见,我通过$value和$question变量将数据传递到这些值上。当我检查数据库时,插入过程似乎工作正常,因为我的数据被传递到表中。为什么我会出现这个错误?我如何修复它?我当前的解决方案是禁用数据库配置中的调试。谢谢。

我发现数组$\u POST中的元素比循环中预期的要多得多,例如数组

public function answerSurvey() {
    $id = $this->uri->segment(3);
    $i = 0;        
    $reserved = $this->mAttendee->getReserve($id, $this->session->username);
    $zxc = $reserved->registration_id;
    foreach ($_POST as $sample) {
        $value = $this->input->post("question_$i");
        $question = $this->input->post("id_$i");
        $qwe = array('answer_value' => $value, 'question_id' => $question, 'user_id' => $id);
        $this->MSurvey->addAnswer($qwe,$zxc);
        $i++;
    }
    redirect(base_url() . "attendee/viewEvent/$id");

您的循环将迭代4次,因此在第三次和第四次迭代中,它将生成错误,因为$U POST中不存在问题3、问题4等项,所以$this->input->POST(“id_$i”)返回空值。

但是否传递值?你从不检查是否
$this->input->post(“问题_$i”)返回一个非NULL值-它可能会返回该值。如果它没有,你会怎么做?@DFriend它有。正如我所说,插入过程在后台运行良好。调用时,该值会正确地回显/显示。为什么将insert放入循环中,并且不使用变量$sample?除非将null值传递给数据库,否则不会出现错误。我建议您仔细查看$\u POST,因为它可能包含与插入内容无关的项目。foreach循环将为$\u POST数组中的每个项目运行一次。所有插入操作都很正常,直到循环计数器递增,“question_$i”中的
$i
创建一个不存在的索引,此时
input->post()
将返回NULL。不要忘记,submit按钮也是一个输入,因此在$\u POST数组中。
array(
    'question_0' => 'a',
    'question_1' => 'b',
    'id_0' => '1',
    'id_1' => '2',
);