在数据库中插入NULL值(Codeigniter)

时间:2016-04-15 05:44:10

标签: php mysql codeigniter

我正在尝试在数据库中插入数据,但不知何故 NULL 插入到数据库中

这是我的控制器

foreach($this->input->post('resume_id') as $key =>$value ){

                $ResumeInsert[$key]['resume_keyid'] = $Resume['resume_id'][$key];
                $ResumeInsert[$key]['employer_name'] = $Resume['employer_name'][$key];
                $ResumeInsert[$key]['start_Date'] = $Resume['start_Date'][$key];
                $ResumeInsert[$key]['end_date'] = $Resume['end_date'][$key];
                $ResumeInsert[$key]['type_id'] = $Resume['type_id'][$key];
                $ResumeInsert[$key]['position'] = $Resume['position'][$key];
                $ResumeInsert[$key]['responsibility'] = $Resume['responsibility'][$key];
                $ResumeInsert[$key]['Skills'] = $Resume['Skills'][$key];

                if(isset($Resume['id'][$key]) ){
                    $Key_Resume__ExistIDs[]=$Resume['id'][$key];
                    $ResumeUpdate[$key]=$ResumeInsert[$key];
                    $ResumeUpdate[$key]['resume_id']=$Resume['id'][$key];
                    unset($ResumeInsert[$key]);
                }
                 else{

                     $ResumeInsert[$key]['resume_id'] = $GetLastID;
                     print_r ($ResumeInsert[$key]);exit;
                     $GetLastID++;
                } 
            }
            $idsToDelete='';
            if(empty($ResumeInsert) &&  empty($ResumeUpdate)){

                $idsToDelete=array_diff($Key_Resume_IDs,$Key_Resume__ExistIDs);
            }
            $status=$this->Resume_model->ProcessData($idsToDelete,$ResumeUpdate,$user_id,$ResumeInsert,$imgInsert,$imgUpdate);

            redirect('Resume','refresh');   

这是我的模型代码

function ProcessData($idsToDelete,$tbl_resumeUpdate,$user_id,$tbl_resumeInsert,$imgInsert,$imgUpdate){
    $this->db->trans_start();
    if(!empty($idsToDelete)){
        $this->delete_tbl_resume($idsToDelete);
    }
    if(!empty($tbl_resumeUpdate)){
        //echo "up";exit;
        $this->update_tbl_resume($tbl_resumeUpdate);
    }
    if(!empty($tbl_resumeInsert)){
        //echo "int";exit;
        $this->insert_tbl_resume($user_id,$tbl_resumeInsert);
    }
    if(!empty($imgInsert)){
        $this->insert_tbl_file_paths($imgInsert);
    }
    if(!empty($imgUpdate)){
        $this->update_tbl_file_paths($imgUpdate);
    }
    return $this->db->trans_complete();
}

这是插入查询

function insert_tbl_resume($id,$arrtbl_resume){
    $this->db->insert_batch('tbl_resume', $arrtbl_resume); 

}

在上面的代码中,在DB中插入空值。 当我打印上面的查询时,它显示空白

请帮助吗?

1 个答案:

答案 0 :(得分:1)

您应该使用form_validation库。我给你举个例子,你可以编辑和使用它。

在autoload.php中,将$autoload['libraries'] = array();行编辑为:

$autoload['libraries'] = array('form_validation');

然后,在控制器文件中使用form_validation。例如:

$this->form_validation->set_rules('resume_keyid', 'Resume ID', 'required');

if ($this->form_validation->run() == FALSE) 
{
   $this->index() // if there is an error, user will redirect to this function
}

else 
{
  $this->Resume_model->ProcessData();
}

另请在模型中使用$this->input->post('resume_keyid', TRUE);结构。 “TRUE”表示“打开XSS过滤器”。因为在CI 3中,它默认为关闭。如果你不想要它,只需删除即可。如果使用CI 2,则无需添加“TRUE”。

一些建议:

1 - 命名函数时不要使用camelization。例如;使用process_data()代替processData()

2 - 检查CI Form Validation Document是否有所有细节(例如所有参考文献)

3 - 我认为你可以使用$this->db->insert();,只需创建一个数组并POST。如果你做到了,你就会明白什么是错的。