una ultimo tabla registro obtener mostrar last_insert_id last insertado como php mysql

php - tabla - obtener ultimo id insertado mysql java



¿Cómo obtengo el último ID insertado de una tabla MySQL en PHP? (22)

$ lastid = mysql_insert_id ();

Tengo una tabla en la que los datos nuevos se insertan con frecuencia. Necesito obtener la última identificación de la mesa. ¿Cómo puedo hacer esto?

¿Es similar a SELECT MAX(id) FROM table ?


Al MySQLi transacción MySQLi , a veces no pude obtener mysqli::$insert_id , porque devolvió 0. Especialmente si estaba usando procedimientos almacenados, eso es ejecutar INSERT s. Entonces, hay otra forma de transacción:

<?php function getInsertId(mysqli &$instance, $enforceQuery = false){ if(!$enforceQuery)return $instance->insert_id; $result = $instance->query(''SELECT LAST_INSERT_ID();''); if($instance->errno)return false; list($buffer) = $result->fetch_row(); $result->free(); unset($result); return $buffer; } ?>



Es triste no ver ninguna respuesta con un ejemplo.

Usando Mysqli :: $ insert_id :

$sql="INSERT INTO table (col1, col2, col3) VALUES (val1, val2, val3)"; $mysqli->query($sql); $last_inserted_id=$mysqli->insert_id; // returns last ID

Usando PDO :: lastInsertId :

$sql="INSERT INTO table (col1, col2, col3) VALUES (val1, val2, val3)"; $database->query($sql); $last_inserted_id=$database->lastInsertId(); // returns last ID


Está bien usar mysql_insert_id() , pero hay una nota específica sobre su uso, debe llamarlo después de ejecutar la consulta INSERT, significa en la misma sesión de script. Si lo usa de lo contrario, no funcionaría correctamente.



Limpio y simple -

$selectquery="SELECT id FROM tableName ORDER BY id DESC LIMIT 1"; $result = $mysqli->query($selectquery); $row = $result->fetch_assoc(); echo $row[''id''];


Lo intenté

mysqli_insert_id ($ dbConnectionObj)

Esto devuelve la última identificación insertada de la conexión actual, por lo que si está administrando sus conexiones correctamente, esto debería funcionar. Trabajó para mí al menos.


Lo que escribiste te proporcionaría la id más grande, suponiendo que fuera única y se autoincrementara, lo cual estaría bien asumiendo que estás de acuerdo en invitar a problemas de concurrencia.
Dado que está utilizando MySQL como su base de datos, existe la función específica LAST_INSERT_ID() que solo funciona en la conexión actual que hizo la inserción.
PHP ofrece una función específica para eso también llamado mysql_insert_id .


NOTA: si realiza varias inserciones con una declaración, mysqli :: insert_id no será correcto.

La mesa:

create table xyz (id int(11) auto_increment, name varchar(255), primary key(id));

Ahora si lo haces:

insert into xyz (name) values(''one''),(''two''),(''three'');

Mysqli :: insert_id será 1, no 3.

Para obtener el valor correcto hazlo:

mysqli::insert_id + mysqli::affected_rows) - 1

Esto ha sido documentado, pero es un poco oscuro.


Para obtener la última identificación insertada en codeigniter Después de ejecutar la consulta de inserción simplemente use una función llamada insert_id() en la base de datos, devolverá la última identificación insertada

Ex:

$this->db->insert(''mytable'',$data); echo $this->db->insert_id(); //returns last inserted id

en una línea

echo $this->db->insert(''mytable'',$data)->insert_id();


Por favor use PDP y luego intente esto

$stmt = $db->prepare("..."); $stmt->execute(); $id = $db->lastInsertId();


Por toda esta discusión, supongo que la razón para verificar la identificación máxima es saber qué id debe ser siguiente ... (si mi ID máxima es 5, la siguiente será 5 + 1 = 6).

>> Si esta no es la razón, mis mejores disculpas

Si otra persona inserta información entre su CHECK e INSERT, le daría una identificación incorrecta.

Por lo tanto, se puede resolver si crea hash que podría incluir la marca de tiempo u otro valor único.

Luego, en la misma función, puede insertar su información con valores vacíos y su hash. Eso crearía ID si tiene seleccionado AUTO_INCRECEMENT.

Luego, en la misma función, aún tendrías tu hash y podrías buscar el id con el mismo hash. Y luego puede completar los valores vacíos con mysql UPDATE.

Esto incluye un poco más de conexiones, pero todavía es una forma de hacerlo ...

Buena suerte resolviéndolo


Prefiero usar una sintaxis pura de MySQL para obtener la última identificación auto_increment de la tabla que quiero.

php mysql_insert_id () y mysql last_insert_id () dan solo la última identificación de transacción.

Si desea el último ID autoincrementado de cualquier tabla en su esquema (no solo la última transacción uno), puede usar esta consulta

SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = ''my_database'' AND TABLE_NAME = ''my_table_name'';

Eso es.


Prueba esto debería funcionar bien:

$link = mysqli_connect("localhost", "my_user", "my_password", "world"); $query = "INSERT blah blah blah..."; $result = mysqli_query($link, $query); echo mysqli_insert_id($link);


Puede obtener la última identificación insertada en la función php incorporada mysql_insert_id();

$id = mysql_insert_id();

usted también obtiene la última identificación por

$id = last_insert_id();



Si su tabla tiene una columna AUTO INCREMENT como UserID, Emp_ID, ... entonces puede usar esta consulta para obtener el último registro insertado SELECT * FROM table_name donde UserID = (seleccione MAX (UserID) desde table_name) En código PHP:

$con = mysqli_connect(''localhost'', ''userid'', ''password'', ''database_name''); if (!$con) { die(''Could not connect: '' . mysqli_error($con)); } $sql = "SELECT * FROM table_name where UserID=(select MAX(UserID)from table_name)"; $result = mysqli_query($con, $sql);

Entonces puede usar datos obtenidos como su requisito


Usa mysqli como mysql es depricating

<?php $mysqli = new mysqli("localhost", "yourUsername", "yourPassword", "yourDB"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s/n", mysqli_connect_error()); exit(); } // Conside employee table with id,name,designation $query = "INSERT INTO myCity VALUES (NULL, ''Ram'', ''Developer'')"; $mysqli->query($query); printf ("New Record has id %d./n", $mysqli->insert_id); /* close connection */ $mysqli->close(); ?>



hay una función para saber cuál fue la última identificación insertada en la conexión actual

mysql_query(''INSERT INTO FOO(a) VALUES(/'b/')''); $id = mysql_insert_id();

Además, usar max es una mala idea porque podría generar problemas si tu código se usa al mismo tiempo en dos sesiones diferentes.

Esa función se llama mysql_insert_id


mysql_query("INSERT INTO mytable (product) values (''kossu'')"); printf("Last inserted record has id %d/n", ***mysql_insert_id()***);