【问题标题】:database error: A PHP Error was encountered in codeigniter 3数据库错误:在 codeigniter 3 中遇到 PHP 错误
【发布时间】:2020-06-03 06:41:46
【问题描述】:

我的模特:

class Admin_model extends CI_Model{
    function add_blog($data){
        $this->db->insert('blog',$data);
        return true;
    }
}

我的控制器功能:

function add_blog(){

    $this->form_validation->set_rules('heading','Heading', 'trim|required');
    if ($this->form_validation->run() == FALSE) {
        $this->session->set_flashdata('error',"Please check the required field");
        redirect('admin/dashboard/add');
    }else{
        //for upload file
        $config['upload_path'] = './assets/uploads/';
        $config['allowed_types'] = 'pdf|doc|docx|txt|jpeg|png|ppt';
        $this->load->library('upload', $config);

        if ( ! $this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors());
        }
        else
        {
            $image_path = base_url("uploads/".$post['raw_name'].$post['file_ext']);
            $data['picture']  = $image_path;
            $data_image = array('upload_data' => $this->upload->data());
        }
        //Upload file end
        $data['picture'] = $data_image['upload_data']['file_name']; 
        $data['heading'] = ucwords($this->input->post('heading'));
        $data['description'] = ucfirst($this->input->post('description'));
        $data['type_id'] = ucwords($this->input->post('type_id'));
        $data['price'] = $this->input->post('price');

        $insert_data = $this->admin_model->add_blog($data);
        if($insert_data){
            echo '<script>alert("Note added sucessfully.");</script>';
            redirect('admin/dashboard');
        }else{
            $this->session->set_flashdata('message',"There is problem in inserting data, please retry once");
            echo "error at last ";
            redirect('admin/dashboard/add');
        }
    }
}

我的看法:

<form role="form" name="myForm"  method="post" enctype="multipart/form-data" action="<?php echo site_url('admin/dashboard/add_blog');?>">
    <label for="">Category</label>
    <select name="type_id" id="" class="form-control" >
        <?php
            if(count($product_list )>0 ){
                foreach ($product_list as $key => $value) {
                ?>
                <option value="<?php echo $value['type_id'];?>"><?php echo $value['type'];?></option>
                <?php
                }}?>
    </select>

    <label for=""> Heading </label>
    <input type="text" name="heading"class="form-control">
    <label for="">Price</label>
    <input type="number" name="price" class="form-control">
    <label for="">Description</label>
    <textarea name="description" id="" cols="30" rows="5" class="form-control"></textarea>
</div>

<div class="form-group">
    <label for="exampleInputFile">Upload pic</label>
    <div class="input-group">
        <div class="custom-file">
            <!--  <input type="file" name="userfile" class="form-control"> -->
            <?php echo form_upload(['name'=>'userfile']); ?>
        </div>
    </div>
    <?php if(isset($upload_error)){echo $upload_error;}?>
</div>
</div>
<div class="card-footer">
    <button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
</div>

遇到了 PHP 错误

严重性:通知 消息:未定义变量:data_image 文件名:admin/Dashboard.php 行号:64

回溯:

文件: /opt/lampp/htdocs/shremad/application/controllers/admin/Dashboard.php 行:64 函数:_error_handler

文件:/opt/lampp/htdocs/shremad/index.php 行:315 功能: 需要一次

遇到了 PHP 错误

严重性:通知 消息:尝试访问 null 类型值的数组偏移量 文件名:admin/Dashboard.php 行号:64

回溯:

文件: /opt/lampp/htdocs/shremad/application/controllers/admin/Dashboard.php 行:64 函数:_error_handler

文件:/opt/lampp/htdocs/shremad/index.php 行:315 功能: 需要一次

发生数据库错误

错误号:1048 “图片”列不能为空

插入blog (picture, heading, description, type_id, price) 值(NULL,'Djjdjdj','Jjdjdj','1','')

文件名:models/Admin_model.php 行号:5

【问题讨论】:

  • 也向我们展示你的模型
  • 我正在上传图片,但没有上传。消息:未定义变量:data_image [错误]

标签: php database codeigniter


【解决方案1】:

我们先分析一下错误信息。

消息:未定义变量:data_image

这意味着,在代码中的某处,您调用了一个未定义的名为“data_image”的变量。现在,请注意这是一个通知,因此在某些情况下您的代码可能会运行良好,但这是一种不好的做法,可能会导致麻烦。 (例如您的情况)。

查看您的代码,以下“块”:

    if ( ! $this->upload->do_upload())
    {
        $error = array('error' => $this->upload->display_errors());
    }
    else
    {
        $image_path = base_url("uploads/".$post['raw_name'].$post['file_ext']);
        $data['picture']  = $image_path;
        $data_image = array('upload_data' => $this->upload->data());
    }
        //Upload file end
    $data['picture'] = $data_image['upload_data']['file_name']; 

$data_image 变量仅在“else”语句下定义。 因此,如果条件返回 true,则 $data_image 变量是真正未定义的。 在这种情况下,以下命令:

$data['picture'] = $data_image['upload_data']['file_name']; 

它基于$data_image 变量,会返回另一个问题:

消息:试图访问 null 类型值的数组偏移量

所以$data['picture'] 现在是NULL,这导致了你的最后一个问题:

“图片”列不能为空

解决方案?

即使在条件返回 true 的情况下,也要确保 $data_image 具有值。或者,如果这个条件返回 true - 以不同的方式处理事情。另请注意,在返回意外结果的条件下,函数可能存在逻辑问题。

(条件:if ( ! $this-&gt;upload-&gt;do_upload())

【讨论】:

  • 如果这个答案对你有帮助,请考虑接受。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多