Como retornar o id gerado apos um insert com PDO

12/09/2016

0

É possível pegar o id gerado em um insert com PDO. Sem precisar fazer algo com max(id) em select no mysql?

$sql = "insert into participantes
                (nome, cpf)
                values(:nome, :cpf)";
        $stmt = $this->db->prepare($sql);
        $stmt->bindParam(":nome", $nome, PDO::PARAM_STR);
        $stmt->bindParam(":cpf", $cpf, PDO::PARAM_STR);
        $stmt->execute();
Samuel Lopes

Samuel Lopes

Responder

Post mais votado

13/09/2016

Oi Samuel,

Você pode usar $this->db->lastInsertId() depois do execute, se a versão do PHP for maior que 5.1.

Estevão Dias

Estevão Dias
Responder

Mais Posts

13/09/2016

Ramon Barbosa

pow legal, isso ajudou muito!

Vlw Estevão!
Responder

13/09/2016

Diego Silva

Muito maneiro! Me ajudou aqui também!
Responder

13/09/2016

Devmedia

Muito legal, galera!
Responder

13/09/2016

Diego Silva

Resolveu para você Samuel?
Responder

13/09/2016

Samuel Lopes

Resolveu muito D+. Muito Obrigado!
Responder

14/09/2016

Raphael Sobreira

O ideal não é fazer uma consulta no banco e retornar esse id? Pois em caso de múltiplos usuários utilizando o sistema poderia ocasionar em um id errado. Me corrija por favor se eu estiver errado..
Responder

14/09/2016

José Tomaz

Quando temos muitos usuários inserindo dados no banco nem sempre o ultimo registro da tabela vai ser o id com o dados que nos inserimos, desta forma existe uma função no PHP que identifica a nossa conexão com o banco de forma unica e nos retorna o ID que foi gerado após o nosso insert é a mysql_insert_id.

Neste artigo do DevMedia o Rafael Silva explica como funciona.
https://www.devmedia.com.br/funcao-mysql-insert-id-recuperando-id-do-mysql-no-php/22243

Espero ter ajudado
Responder

14/09/2016

Samuel Lopes

Mas a função acima não faz o mesmo que mysql_insert_id?
E está função não da para usar com pdo, ou da?
Responder

02/05/2019

Samuel Lima

Oi Samuel,

Você pode usar $this->db->lastInsertId() depois do execute, se a versão do PHP for maior que 5.1.


Estou com o mesmo problema e retornando o erro quando vou mandar a mensagem de sucesso!

$result_events = $pdo->prepare("INSERT INTO events (title, color, start, end) VALUES(?,?,?,?)");
$result_events->execute(array($_POST['title'],$_POST['color'],$_POST['start'],$_POST['end']));
$result_events->execute();
$ultimoid = $pdo->lastInsertId();


if(lastInsertId($ultimoid)){
$_SESSION['msg'] = "<div class='alert alert-success' role='alert'>O Evento Cadastrado com Sucesso<button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden='true'>×</span></button></div>";
header("Location: index.php");
}else{
$_SESSION['msg'] = "<div class='alert alert-danger' role='alert'>Erro ao cadastrar o evento <button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden='true'>×</span></button></div>";
header("Location: index.php");
}

}else{
$_SESSION['msg'] = "<div class='alert alert-danger' role='alert'>Erro ao cadastrar o evento <button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden='true'>×</span></button></div>";
header("Location: index.php");
}
Responder

20/06/2019

Programador

O ideal não é fazer uma consulta no banco e retornar esse id? Pois em caso de múltiplos usuários utilizando o sistema poderia ocasionar em um id errado. Me corrija por favor se eu estiver errado..
Interesse a dúvida, alguém saberia explicar se funciona com múltiplos usuários?
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar