【问题标题】:PHP Grocery Crud Last Inserted Id not foundPHP Grocery Crud 上次插入的 ID 未找到
【发布时间】:2014-09-24 14:34:05
【问题描述】:

我想在保存后将页面重定向到必须具有最后插入的 id(主键)的新页面

            $crud = new grocery_CRUD();
        //  $crud->set_theme('datatables');
        $crud->set_table('visitor');
        $crud->set_subject('Visitor');
        $crud->required_fields('id');            
        $crud->columns('event_type', 'name', 'number', 'email', 'company_name', 'designation');
        $crud->set_relation('event_type', 'event_type', 'event');
        $crud->field_type('visitor_type', 'dropdown', array('1' => 'Visitor', '2' => 'Exhibitor', '3' => 'Staff'));
        $crud->callback_before_insert(array($this, 'insert_data_callback'));
        $crud->callback_after_insert(array($this, 'after_insert'));
        $crud->change_field_type('date', 'invisible');
        $crud->set_lang_string('insert_success_message',
     'Your data has been successfully stored into the database.<br/>Please wait while you are redirecting to the list page.
     <script type="text/javascript">
      window.location = "'.site_url('visitor').'/'.'barcode/'.$this->db->insert_id().'";
     </script>
     <div style="display:none">
     '
        ); 

window.location = "'.site_url('visitor').'/'.'barcode/'.$this-&gt;db-&gt;insert_id().'"; 是主要的。 $this-&gt;db-&gt;insert_id() 总是返回 0 我也尝试使用 callback_after_insert 函数并添加了以下代码,但是这也总是返回 0

function after_insert($post_array, $lastInsertedId) {
    print_r($post_array);
    echo " hello this is called ". $lastInsertedId. " ". $this->db->insert_id();
}

但这似乎不起作用,我只想要最后插入的 id 并将其重定向到新页面。 我已经浏览了杂货杂货网站和 stackoverflow 来解决这个问题,并尝试了几乎所有可能的选项,但似乎没有任何效果。

【问题讨论】:

    标签: php codeigniter grocery-crud


    【解决方案1】:

    试试这个:

    $query = $this->db->query('SELECT LAST_INSERT_ID()');
    $row = $query->row_array();
    

    然后用

    访问id
    $row['LAST_INSERT_ID()'];
    

    【讨论】:

      【解决方案2】:

      在你的控制器上:

       $crud->set_lang_string('insert_success_message',
                  'Your data has been successfully stored into the database.   <br/>Please wait while you are redirecting to the list page.
                  <script type="text/javascript">
                  window.location = "'.site_url(strtolower(__CLASS__).'/redirect_to_url/').'";
                  </script>
                  <div style="display:none">
              '
              );
          $crud->callback_after_insert(array($this,'_something_after_insert'));
      

      插入后的回调将您的 insert_id 添加到闪存数据中

      function _something_after_insert($post_array, $primary_key) 
          {
              $this->session->set_flashdata('last_pk', $primary_key);
              return true;
          }
      

      然后你的重定向方法

      function redirect_to_url() 
      {
          redirect(base_url('something/edit/'.$this->session->flashdata('last_pk')),'refresh');
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多