Tengo una consulta de inserción (estilo de registro activo) utilizada para insertar los campos de formulario en una tabla MySQL. Quiero obtener la última identificación de incremento automático para la operación de inserción como el valor de retorno de mi consulta, pero tengo algunos problemas con ella.
Dentro del controlador:
function add_post(){
$post_data = array(
'id' => '',
'user_id' => '11330',
'content' => $this->input->post('poster_textarea'),
'date_time' => date("Y-m-d H:i:s"),
'status' => '1'
);
return $this->blog_model->add_post($post_data);
}
Y dentro del modelo:
function add_post($post_data){
$this->db->trans_start();
$this->db->insert('posts',$post_data);
$this->db->trans_complete();
return $this->db->insert_id();
}
No obtengo nada como el regreso de add_post en el modelo
mysql
codeigniter
Dev afgano
fuente
fuente
db->insert_id()
regresafalse
después de adb->trans_complete()
. Asegúrese de obtenerinsert_id()
los suyos antes de completar la transacción.Respuestas:
Prueba esto
En caso de múltiples inserciones, puede usar
fuente
Aquí no se necesita una transacción, esto debería ser suficiente:
fuente
fuente
De la documentación :
Por lo tanto, podría usar algo como esto:
fuente
porque ha iniciado la Transacción sobre la inserción de datos, entonces, Primero verifique que la transacción se haya completado o no. una vez que comience la transacción, debe confirmarse o revertirse de acuerdo con el estado de la transacción;
en lo anterior, hemos comprometido los datos de la transacción exitosa incluso si recibe la marca de tiempo
fuente
Solo para completar este tema: si configura su tabla con la clave principal y el incremento automático, puede omitir el proceso de incrementar manualmente la identificación.
Mira este ejemplo
Ahora puedes insertar filas
fuente
fuente
Usando el controlador mysqli PHP, no puede obtener el insert_id después de confirmar.
La verdadera solución es esta:
Fuente para la estructura del código: https://codeigniter.com/user_guide/database/transactions.html#running-transactions-manually
fuente
Debes usar
$lastId = $this->db->insert_id();
fuente