codeigniter — Последний вставленный код PHP Grod Crud Идентификатор не найден

я хочу перенаправить страницу после сохранения на новую страницу, которая должна иметь последний вставленный идентификатор (первичный ключ)

            $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->db->insert_id().'"; это главное.
$this->db->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();
}

но это не похоже на работу, я просто хочу последний вставленный идентификатор и перенаправить его на новую страницу.
Я нашел сайт для поиска продуктов и stackoverflow для решения этой проблемы и перепробовал почти все возможные варианты, но, похоже, ничего не работает для этого.

0

Решение

попробуй это:

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

затем получить доступ к идентификатору с

$row['LAST_INSERT_ID()'];
0

Другие решения

На вашем контроллере:

 $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 к данным Flash

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');
}
0

По вопросам рекламы [email protected]