【问题标题】:Get response from insert model in code igniter从 codeigniter 中的插入模型获取响应
【发布时间】:2016-01-29 08:42:54
【问题描述】:

这是我的控制器

        $this->insert_model->form_insert($data);
        $data['message'] = 'Data Inserted Successfully';
        //Loading View
        $this->load->view('header');
        $this->load->view('post-add', $data);

这是我的模特

function form_insert($data){
    //Inserting in Table(students) of Database(college) 
    $this->db->insert('adds', $data); 
}    

数据添加到模型 (insert_model) 并显示消息 - 数据插入成功

但我想显示消息 SUCESSerror

【问题讨论】:

    标签: php codeigniter model-view-controller


    【解决方案1】:

    我们可以得到最后插入的 id。在Codeigniter中,最后插入的id返回:

    $this->db->insert_id();
    

    我已经尝试了下面的代码并且工作正常。

    <?php
                $is_insert=$this->insert_model->form_insert($data);
                if($is_insert > 0)
                   $data['message'] = 'Data Inserted Successfully';
                else
                   $data['message'] = 'Error in insert';
                //Loading View
                $this->load->view('header');
                $this->load->view('post-add', $data);
    
    
                function form_insert($data){
                   //Inserting in Table(students) of Database(college) 
                   $this->db->insert('adds', $data); 
                   return $this->db->insert_id();
                }
            ?>
    

    如需 CI 参考,请查看以下网址: https://ellislab.com/codeigniter/user-guide/database/helpers.html

    【讨论】:

      【解决方案2】:

      只需对您的代码进行一些更改,如下所示:

      控制器:-

      if($this->insert_model->form_insert($data)){
          $data['message'] = 'Data Inserted Successfully';
      }else{
          $data['message'] = 'Error message';
      }
      //Loading View
      $this->load->view('header');
      $this->load->view('post-add', $data);
      

      型号:-

      function form_insert($data){
         //Inserting in Table(students) of Database(college) 
         $this->db->insert('adds', $data);
         return $this->db->affected_rows();
      }  
      

      【讨论】:

      • 模型中的整个if语句可以用1行完成:return $this->db->affected_rows() > 0;
      • 嗨..它没有完全解决问题..假设我输入的主键已经存在于数据库表中,所以它给出了这样的错误 A Database Error Occurred Error Number: 1062键 'PRIMARY' 的重复条目 '7' 但我想给出我的自定义错误,即 $data['message'] = 'Error';
      • 为什么要输入重复的主键?
      【解决方案3】:

      使用$this-&gt;db-&gt;affected_rows();检查数据是否插入

      在模型中

      function form_insert($data) {
          //Inserting in Table(students) of Database(college) 
          $this->db->insert('adds', $data);
          $afftectedRows = $this->db->affected_rows();
          if ($afftectedRows > 0) {
              return TRUE;
          } else {
              return FALSE;
          }
      }
      

      在控制器中

      $insert = $this->insert_model->form_insert($data);
      if ($insert) {
          $data['message'] = 'Data Inserted Successfully';
      } else {
          $data['message'] = 'Error';
      }
      //Loading View
      $this->load->view('header');
      $this->load->view('post-add', $data);
      

      【讨论】:

      • 非常感谢,还有一件事我想问你..如果mysql没有准备好或数据库连接出错会出错吗???
      • 检查数据库连接错误检查stackoverflow.com/questions/12483861/…
      • 是的,谢谢亲爱的.. 我是 mvc 新手,所以很困惑,我可以要你的 skype id 吗?
      【解决方案4】:

      型号

      function form_insert($data){
          $this->db->insert('adds', $data);
      
          return $this->db->affected_rows() > 0;
      }
      

      控制器:

      $this->insert_model->form_insert($data);
      if (form_insert == true){
          $data['message'] = 'success';
      } else {
          $data['message'] = 'error';
      }
      $this->load->view('header');
      $this->load->view('post-add', $data);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-02
        • 1970-01-01
        • 1970-01-01
        • 2018-04-20
        • 1970-01-01
        相关资源
        最近更新 更多