Saltar al contenido

¿Por qué mysqli_insert_id () siempre devuelve 0?

Solución:

mysqli_insert_id lo hace no devuelve el ID de la última fila de la tabla. De los documentos, es:

… devuelve el ID generado por una consulta en una tabla con una columna que tiene el atributo AUTO_INCREMENT. Si la última consulta no fue una INSERT o UPDATE declaración o si la tabla modificada no tiene una columna con la AUTO_INCREMENT atributo, esta función devolverá cero.

(Mi énfasis)

Es decir, si lo ejecutara de inmediato después una inserción que genera automáticamente una ID, en la misma conexión con la que hizo la inserción, devolvería la ID generada para esa inserción.

Esto se ilustra con el ejemplo en los documentos vinculados anteriormente:

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

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

Para obtener el resultado, debe colocar el

$last_row = mysqli_insert_id($connection);

después de su consulta INSERT

Para otras personas que vienen aquí, tal vez lo intentaste INSERT IGNORE INTO y tienes un UNIQUE valor que ya se insertó. En ese caso, esta identificación es cero.

También obtendrá “cero” si MySQL se queda sin conexiones. No soy un experto en conexiones persistentes, pero ¿esto podría ayudar a alguien?

Como probablemente sepa, la extensión PHP “mysql” admitía conexiones persistentes, pero se deshabilitaron en la nueva extensión “mysqli” –Peter Zaitsev

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *