El campo 'id' de mi tabla automática aumenta cuando inserto una fila. Quiero insertar una fila y luego obtener esa ID.
Lo haría tal como lo dije, pero ¿hay alguna manera de hacerlo sin preocuparme por el tiempo entre insertar la fila y obtener la identificación?
Sé que puedo consultar en la base de datos la fila que coincide con la información que se ingresó, pero hay un gran cambio, habrá duplicados, y la única diferencia será la identificación.
mysql_insert_id() will convert the return type of the native MySQL C API function mysql_insert_id() to a type of long (named int in PHP). If your AUTO_INCREMENT column has a column type of BIGINT (64 bits) the conversion may result in an incorrect value. Instead, use the internal MySQL SQL function LAST_INSERT_ID() in an SQL query. For more information about PHP's maximum integer values, please see the integer documentation.
\La función MySQL
LAST_INSERT_ID()
hace justo lo que necesita: recupera la identificación que se insertó durante esta sesión . Por lo tanto, es seguro de usar, incluso si hay otros procesos (otras personas que llaman exactamente el mismo script, por ejemplo) insertando valores en la misma tabla.La función PHP
mysql_insert_id()
hace lo mismo que llamarSELECT LAST_INSERT_ID()
conmysql_query()
.fuente
echo mysql_insert_id(); mysql_query('SELECT LAST_INSERT_ID(600)'); echo mysql_insert_id(); mysql_query('SELECT LAST_INSERT_ID()');
El segundomysql_insert_id()
no refleja 600, donde como lomysql_query('SELECT LAST_INSERT_ID()')
hará. Paramysql_insert_id()
que refleje el cambio, primero debe hacer una inserción o una actualización (que puede afectar a 0 filas). Vea el último párrafo de: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-idEn cuanto al sitio web de PHP, mysql_insert_id ahora está en desuso y debemos usar PDO. Para hacer esto con PDO, proceda de la siguiente manera:
fuente
Como dijo @NaturalBornCamper, mysql_insert_id ahora está en desuso y no debe usarse. Las opciones ahora son usar PDO o mysqli. NaturalBornCamper explicó PDO en su respuesta, así que le mostraré cómo hacerlo con MySQLi ( MySQL Improved ) usando mysqli_insert_id .
Consulte la documentación de PHP para obtener más ejemplos: http://php.net/manual/en/mysqli.insert-id.php
fuente
Solo quiero agregar un pequeño detalle sobre
lastInsertId()
;Al ingresar más de una fila a la vez, no devuelve el último Id , sino el primer Id de la colección de las últimas inserciones.
Considere el siguiente ejemplo
Lo que sucede aquí es que presiono
my_table
dos filas nuevas. La identificación de la tabla es de incremento automático. Aquí, para el mismo usuario, agrego dos filas con una diferentevarNumb
.El valor repetido al final será igual a la identificación de la fila donde
varNumb=1
, lo que significa no la identificación de la última fila, sino la identificación de la primera fila que se agregó en la última solicitud.fuente
Un ejemplo.
La línea de código
$course_id = $query_new->insert_id;
mostrará la ID de la última fila insertada. Espero que esto ayude.fuente
Intenta así, puedes obtener la respuesta:
Echa un vistazo a los siguientes enlaces:
http://www.w3schools.com/php/func_mysqli_insert_id.asp
http://php.net/manual/en/function.mysql-insert-id.php
También tenga en cuenta que esta extensión fue obsoleta en PHP 5.5 y eliminada en PHP 7.0
fuente
Encontré una respuesta en el enlace anterior http://php.net/manual/en/function.mysql-insert-id.php
La respuesta es:
fuente
mysql
respuesta insegura , nunca la uses.Prueba esto ... ¡funcionó para mí!
fuente
Otra posible respuesta será:
Cuando defina la tabla, con las columnas y los datos que tendrá. El ID de la columna puede tener la propiedad AUTO_INCREMENT .
Por este método, no tiene que preocuparse por la identificación , se realizará automáticamente .
Por ejemplo (tomado de w3schools )
Espero que esto sea útil para alguien.
Editar: Esta es solo la parte donde define cómo generar una ID automática, para obtenerla después de creada, las respuestas anteriores son correctas.
fuente