Codeigniter未定义偏移量:提交表格时为0

时间:2019-07-06 11:43:38

标签: php codeigniter

未定义偏移:提交后,我的编辑数据表单中发生0错误。 有时,这是可行的,但在大多数情况下却没有。知道错误发生在哪里吗?

 function data_user_edit($id = ''){

$user = $this->adminmodel->selectdata('user where id_user = "'.$id.'"')->result_array();

            $data = array(
                'title'             => '.:: EVALUASI PROSES BELAJAR MENGAJAR GURU SMA NEGERI 4 BEKASI::. ',
                'titlesistem'       => $this->model->getTitle(),
                'nama'              => $user[0]["nama"],
                'id_user'           => $user[0]["id_user"],
                'status'            => 'edit',
                'username'          => $user[0]["username"],
                'password'          => $user[0]["password"],
                'level'             => $user[0]["level"],
                'tipeakun'          => $user[0]["tipeakun"],
        );

            $this->load->view('admin/header',$data);
            $this->load->view('admin/data_user_form');
            $this->load->view('admin/footer');

2 个答案:

答案 0 :(得分:0)

检查$user是否为空,并验证您所编码的有效

答案 1 :(得分:0)

想象一下一个场景,尤其是在使用公共控制器的情况下,用户手动进入您的somepage/data_user_edit,并且没有输入其ID。这是他们将得到的错误,因为$user返回布尔值或没有行,因此未定义$user[0]

首先,如果这是一个用户编辑页面,那么让您感到惊讶的是,他们允许他们选择手动将其ID输入到url中,并可能仅通过更改url来更改其他用户的详细信息。这应该从session变量中获取,并且必须登录它们才能看到到达页面。

第二,理所当然,您应该始终在尝试访问num_rows() > 0之前检查result

第三,您只能将row_array()用作一条记录,而不是result_array()。您不需要$user[0],而只需使用$user

例如

if (is_null($this->session->id)) {
    show_error('not allowed');
}

$id = $this->session->id;

$query = $this->adminmodel->selectdata('user where id_user = "'.$id.'"');

if ($query->num_rows() !== 1) {
    show_error('no user with id');
}

$user = $query->row_array();

            $data = array(
                'title'             => '.:: EVALUASI PROSES BELAJAR MENGAJAR GURU SMA NEGERI 4 BEKASI::. ',
                'titlesistem'       => $this->model->getTitle(),
                'nama'              => $user["nama"],
                'id_user'           => $user["id_user"],
                'status'            => 'edit',
                'username'          => $user["username"],
                'password'          => $user["password"],
                'level'             => $user["level"],
                'tipeakun'          => $user["tipeakun"],
        );

            $this->load->view('admin/header',$data);
            $this->load->view('admin/data_user_form');
            $this->load->view('admin/footer');