2012-01-02 13 views
17

En mi tabla mysql tengo una columna id que está configurada para autoincrementarse.PHP/MySQL Obtener valor autoincrementado después de la inserción

Entonces hago preguntas como esta:

INSERT INTO tabla (id, foo) VALUES ('', 'valor')

cómo puedo luego averiguar con seguridad qué ID se generó con este inserto ?

si solo consulto la última identificación esto podría no ser seguro, ya que otra inserción podría haber sucedido mientras tanto, ¿no?

+2

incorrecto. La ÚLTIMA ID será la última identificación que se haya insertado usando esa conexión. A menos que compartas la conexión, esa será la declaración que acaba de suceder. Entonces 'INSERT INTO; SELECT LAST_INSERT_ID' será bueno. – Konerak

+2

posible duplicado de [php/MySQL insert row then get 'id'] (http://stackoverflow.com/questions/897356/php-mysql-insert-row-then-get-id) – hakre

+0

sí, lo siento es un duplicado de esa otra pregunta – clamp

Respuesta

1
mysql_insert_id(); 

También puede simplemente ejecutar esta consulta:

INSERT INTO table (foo) VALUES ('bar') 
2

Si utiliza mysql_query (". .. "), luego mysql_insert_id() es la función que necesita. Si utiliza algo más para hacer consultas, debe verificarse la documentación correspondiente

2

Si está utilizando PHP para obtener el valor auto_incrementado que se devuelve después de una instrucción INSERT, intente con el MySQLi insert_id function. La versión anterior de mysql_insert_id() está en desuso en PHP.

un ejemplo a continuación:

<?php 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$mysqli->query("CREATE TABLE myCity LIKE City"); 

$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)"; 
$mysqli->query($query); 

printf ("New Record has id %d.\n", $mysqli->insert_id); 

/* drop table */ 
$mysqli->query("DROP TABLE myCity"); 

/* close connection */ 
$mysqli->close(); 
?> 
0

también en PDO después de que el comando de ejecución como el ejemplo siguiente:

$lastId = $dbh->lastInsertId(); 

hacer clic para REF

Cuestiones relacionadas