PHP - Se puede obtener un ID tras un Insert?

 
Vista:

Se puede obtener un ID tras un Insert?

Publicado por Nau (1 intervención) el 04/03/2020 21:32:55
Buenas!

Soy nuevo con PHP y tengo una duda... debería ser sencilla pero no consigo conseguir resolverla, pero que alguien me pueda ayudar =)

Tengo este código:

1
2
3
4
5
6
7
8
9
10
11
$sql = "INSERT INTO Usuarios (Nickname, ProvinciaOrigen) VALUES ('".$Nickname."','".$ProvinciaOrigen."')";
$result = mysqli_query($conn, $sql);
 
$sql = "SELECT ID FROM Usuarios WHERE ProvinciaOrigen='$ProvinciaOrigen' LIMIT 1";
$result = mysqli_query($conn, $sql);
 
if(mysqli_num_rows($result) > 0){
    while($row = mysqli_fetch_assoc($result)){
        echo $row['ID'];
    }
}

La cosa es que ID es una columna Key incremental en mi base de datos, y me gustaría que al insertar una nueva entrada, me devolviera su ID (Generado automáticamente en la base de datos) sin tener que hacer más búsquedas.

Imagino que si la base de datos acaba con miles de usuarios, y tengo que comprobar el string provincia a la hora de buscar, es mucho menos óptimo que solo comprobar un ID (Key).

Sabéis si hay alguna forma de tener ese ID tras el "insert into"?

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Se puede obtener un ID tras un Insert?

Publicado por Julio (830 intervenciones) el 04/03/2020 21:38:09
Hola. Aquí tienes un ejemplo que lo hace. Adáptalo a tu código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
 
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
 
if ($conn->query($sql) === TRUE) {
    $last_id = $conn->insert_id;
    echo "New record created successfully. Last inserted ID is: " . $last_id;
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
 
$conn->close();

Si estás aprendiendo PHP, pásate por mi blog (enlace en la firma) y te puedes suscribir. Voy colocando dos o tres artículos cada semana y en unas semanas empezaré con el tema de bases de datos y construcción de sistemas de usuario y contraseña.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se puede obtener un ID tras un Insert?

Publicado por Nau (1 intervención) el 04/03/2020 21:56:13
insert_id que es? Una variable nombradas por mí?

Entiendo que en mi caso insert_id debería llamarse ID, verdad? (Es el nombre de la columna de la base de datos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Se puede obtener un ID tras un Insert?

Publicado por Julio (830 intervenciones) el 04/03/2020 22:04:34
No, a ver, te explico que te veo un poco perdido. Tú tienes tu sentencia SQL como esta:

1
2
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

Luego ejecutas la consulta y obtienes si ha ido bien (true) o ha dado error (false):

1
$result = $conn->query($sql);

Recuerda que en $conn tienes la conexión abierta a la base de datos. Esta variable tiene un método para acceder a la ID de la última inserción realizada:

1
$conn->insert_id

Así es como se obtiene esa ID que buscas.

En tu caso deberías obtener esa ID después de realizar el INSERT y antes de realizar el SELECT. Bueno no, ya no necesitarías ese SELECT porque ya habrías obtenido el ID que buscabas.

¿Queda más claro? Si no lo entiendes te guío con más detalle en tu caso concreto, no hay problema.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar