English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico PHP

Tutorial Avançado PHP

PHP & MySQL

Manual de Referência PHP

Último ID Inserido MySQL PHP

Neste tutorial, você aprenderá como usar PHP para recuperar o ID único da última linha inserida em uma tabela do banco de dados MySQL.

Como obter o ID da última linha inserida

Em " PHP MySQL inserirNeste capítulo, você já aprendeu que o AUTO_INCREMENT gera automaticamente um ID único a cada vez que uma nova linha é inserida na tabela. Mas, em algumas situações, você precisa que este ID seja gerado automaticamente para ser inserido em uma segunda tabela. Nesses casos, você pode usar a função PHP mysqli_insert_id() para recuperar o último ID gerado, conforme o exemplo a seguir.

Neste exemplo, usaremos o que aprendemos noPHP MySQL criar tabelamesmo capítulo onde foi criadopessoaltabela, que possui quatro colunasid,first_name,last_nameeemail, ondeidé a coluna primária e está marcada com o sinal AUTO_INCREMENT.

Exemplo: Método procedimental

<?php
/* Tente conectar ao servidor MySQL. Suponha que você esteja executando MySQL.
Servidor com configurações padrão (usuário sem senha "root")*/
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Verificar conexão
if ($link === false) {
    die("Erro: Não foi possível conectar. " . mysqli_connect_error());
}
 
//Tente executar a consulta de inserção
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Ron', 'Weasley', '[email protected]')";
if (mysqli_query($link, ''$sql'')) {
    //Obter o último ID inserido
    $last_id = mysqli_insert_id($link);
    echo "Registo inserido com sucesso. O último ID inserido é: ". $last_id;
} else{
    echo "Erro: Não foi possível executar $sql. ". mysqli_error($link);
}
 
//Fechar conexão
mysqli_close($link);
?>

Exemplo: Método orientado a objetos

<?php
/* Tente conectar ao servidor MySQL. Suponha que você esteja executando MySQL.
Servidor com configurações padrão (usuário sem senha "root")*/
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Verificar conexão
if($mysqli === false){
    die("Erro: Não foi possível conectar. ". $mysqli->connect_error);
}
 
// Tente executar a consulta de inserção
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Ron', 'Weasley', '[email protected]')";
if($mysqli->query($sql) === true){
    //Obter o último ID inserido
    $last_id = $mysqli->insert_id;
    echo "Registo inserido com sucesso. O último ID inserido é: ". $last_id;
} else{
    echo "Erro: Não foi possível executar $sql. ". $mysqli->error;
}
 
//Fechar conexão
$mysqli->close();
?>

Exemplo: Método PDO

<?php
/* Tente conectar ao servidor MySQL. Suponha que você esteja executando MySQL.
Servidor com configurações padrão (usuário sem senha "root")*/
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //Definir o modo de erro PDO como exceção
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("Erro: Não foi possível conectar. ". $e->getMessage());
}
 
//Tente executar a consulta de inserção
try{
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Ron', 'Weasley', '[email protected]')";    
    $pdo->exec($sql);
    $last_id = $pdo->lastInsertId();
    echo "Registo inserido com sucesso. O último ID inserido é: ". $last_id;
} catch(PDOException $e){
    die("Erro: Não foi possível executar $sql. ". $e->getMessage());
}
 
//Fechar conexão
unset($pdo);
?>