pdo lastInsertId

Mammouth du PHP | 514 Messages

25 avr. 2008, 10:19

Bonjour,

Je cherche à récupérer le dernier id inséré après un pdostatement.

$stmt = Chrono::$myConnexion->prepare("REPLACE INTO participants (id, nom, prenom) values (:id, :nom, :prenom)");
$stmt->bindParam(":id", $this->id);
$stmt->bindParam(":nom", $this->nom);
$stmt->bindParam(":prenom", $this->prenom);
$stmt->execute();
si je fais :
$stmt->lastInsertId();
J'ai une erreur :

Fatal error: Call to undefined method PDOStatement::lastInsertId() in

En gros, sur un pdostatement, lastinsertid ne fonctionne pas ... Et si je le fais
Chrono::$myConnexion->lastInsertId();
ça me retourne toujours 0 ...

Je pense que c'est à cause de mon "replace" ... Mais comment régler le problème ?

Eléphant du PHP | 353 Messages

25 avr. 2008, 10:25

Hum.
Et si tu fait un insert plutot qu'un replace?

Mammouth du PHP | 514 Messages

25 avr. 2008, 10:27

J'utilise le replace pour ne pas avoir à gérer les "update" et les "insert", et donc j'ai une seule requête dans ma méthode "save".

Ma base de données ne changera pas, pour info.

Je cherche une autre solution, et je me suis dit que ça devait pouvoir se trouver ...

EDIT :

En fait, en mettant mon lastinsertid avant le commit, ça fonctionne ...

C'était tout con :|