【问题标题】:how to insert a records in database in CICI中如何在数据库中插入记录
【发布时间】:2018-06-27 02:29:18
【问题描述】:

我的控制器 Hello.php 是这样的:

class Hello extends CI_Controller {

    public function __construct(){
      parent::__construct();
      $this->load->model('insert_model');
    }

    public function index(){
      $this->insert_model->insert();
      $data['message'] = 'Data Inserted Successfully';
    }

我的模型 insert_model.php 像这样:

class insert_model extends CI_Model{

     public function __construct()
     {
       $this->load->database(); 
     }

     public function insert(){
       $data=array(
        'user_name'=>$this->input->post('user_name'),
        'user_email'=>$this->input->post('user_email'),
        'user_password'=>$this->input->post('user_password'),
        'user_dob'=>$this->input->post('user_dob'),
        'user_gender'=>$this->input->post('user_gender'),
        'user_address'=>$this->input->post('user_address'),
        'user_contact'=>$this->input->post('user_contact')

       );

        $this->db->insert('user',$data);  
     }
}

但问题是我的记录没有插入数据库中...


【问题讨论】:

  • 有什么错误
  • 插入查询后只需放 'echo $this->db->last_query();死;' .它将显示整个查询。只需复制该查询并在 MySQL 控制台中触发。如果有任何问题,您将收到错误。
  • 您遇到了什么错误?

标签: php mysql codeigniter


【解决方案1】:
**in controller**
public function index(){
      $data=array(
        'user_name'=>$this->input->post('user_name'),
        'user_email'=>$this->input->post('user_email'),
        'user_password'=>$this->input->post('user_password'),
        'user_dob'=>$this->input->post('user_dob'),
        'user_gender'=>$this->input->post('user_gender'),
        'user_address'=>$this->input->post('user_address'),
        'user_contact'=>$this->input->post('user_contact')

       );
      $last_id = $this->insert_model->insert_data($data);
if($last_id)
      $data['message'] = 'Data Inserted Successfully';

**In model**

      public function insert(){
     $this->db->insert('user',$data);
     //check the query by
     echo $this->db->last_query();
     return $this->db->insert_id();  
 }

【讨论】:

    【解决方案2】:

    你做错了。查看你在控制器中调用插入模型,你可以在控制器中从视图发送数据,但不能在模型中发送数据。所以没有帖子数据进入模型。

        class Hello extends CI_Controller {
    
            public function __construct(){
              parent::__construct();
              $this->load->model('insert_model');
            }
    
            public function index(){
              $data=array(
                'user_name'=>$this->input->post('user_name'),
                'user_email'=>$this->input->post('user_email'),
                'user_password'=>$this->input->post('user_password'),
                'user_dob'=>$this->input->post('user_dob'),
                'user_gender'=>$this->input->post('user_gender'),
                'user_address'=>$this->input->post('user_address'),
                'user_contact'=>$this->input->post('user_contact')
    
               );
              $data['last_id'] = $this->insert_model->insert_data($data);
              $data['message'] = 'Data Inserted Successfully';
            }
    
        class insert_model extends CI_Model{
    
             public function __construct()
             { 
               parent::__construct();
               $this->load->database(); 
             }
    
             public function insert_data($data){
                $this->db->insert('user',$data); 
                return $this->db->insert_id(); 
             }
        }
    

    如果这能解决您的问题,请告诉我。

    【讨论】:

      【解决方案3】:

      我的代码有问题,首先在 hello/index 中加载视图页面 然后检查提交按钮的 isset 例如;

      $submit = $this->input->post('submit');
      if(isset($submit)){}
      

      或者,如果您在相同的方法上加载视图页面,那么您必须调用表单操作,例如;

      <form method="post" action="<?php echo base_url(); ?>hello/index" >
      

      我已经更新了你的代码

      Controller.php

      class Hello extends CI_Controller {
          public function __construct(){
            parent::__construct();
            $this->load->model('insert_model');
          }
          public function index(){
              $submit = $this->input->post('submit');
              if(isset($submit)){
                        $data=array(
                          'user_name'=>$this->input->post('user_name'),
                          'user_email'=>$this->input->post('user_email'),
                          'user_password'=>$this->input->post('user_password'),
                          'user_dob'=>$this->input->post('user_dob'),
                          'user_gender'=>$this->input->post('user_gender'),
                          'user_address'=>$this->input->post('user_address'),
                          'user_contact'=>$this->input->post('user_contact')
      
                         );
                      $insert = $this->inser_model-> insert_data();
                      if($insert) {
                        $data['message'] = 'Data Inserted Successfully';
                      }
              }
              $this->load->view('your_page');
          }
      }
      

      Model.php

      class insert_model extends CI_Model{
          public function insert_data($data){
              return   $this->db->insert('user',$data); 
          }
      }
      

      【讨论】:

        【解决方案4】:

        根据您的代码,代码中没有任何问题。但请确保您的数据库user 表具有user_nameuser_email ....user_contact 之类的列。

        'user_name'=>$this->input->post('user_name'),
        'user_email'=>$this->input->post('user_email'),
        'user_password'=>$this->input->post('user_password'),
        'user_dob'=>$this->input->post('user_dob'),
        

        数组键应始终引用表列名

        'column_name'=>value,
        

        【讨论】:

        • yap.....但是数据不是只插入数据库中的空白行。
        猜你喜欢
        • 1970-01-01
        • 2010-11-18
        • 1970-01-01
        • 1970-01-01
        • 2018-05-07
        • 1970-01-01
        • 1970-01-01
        • 2017-10-04
        • 1970-01-01
        相关资源
        最近更新 更多