Como retornar o id gerado apos um insert com PDO

MySQL

PHP

12/09/2016

É 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

Curtidas 0

Melhor post

Estevão Dias

Estevão Dias

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.
GOSTEI 4

Mais Respostas

Ramon Barbosa

Ramon Barbosa

12/09/2016

pow legal, isso ajudou muito!

Vlw Estevão!
GOSTEI 1
Diego Silva

Diego Silva

12/09/2016

Muito maneiro! Me ajudou aqui também!
GOSTEI 2
Devmedia

Devmedia

12/09/2016

Muito legal, galera!
GOSTEI 1
Diego Silva

Diego Silva

12/09/2016

Resolveu para você Samuel?
GOSTEI 1
Samuel Lopes

Samuel Lopes

12/09/2016

Resolveu muito D+. Muito Obrigado!
GOSTEI 0
Raphael Sobreira

Raphael Sobreira

12/09/2016

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..
GOSTEI 0
José Tomaz

José Tomaz

12/09/2016

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
GOSTEI 1
Samuel Lopes

Samuel Lopes

12/09/2016

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?
GOSTEI 0
Samuel Lima

Samuel Lima

12/09/2016

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");
}
GOSTEI 0
Programador

Programador

12/09/2016

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?
GOSTEI 0
POSTAR