Bonjour à vous tous,

J'ai un petit souci avec la méthode PDO::LastInsertId() et MySQL5.
J'enregistre des données dans une table avec un id autoincrémenté et j'aimerais bien récupérer le dernier Id. Ceci me permettait d'utiliser cet Id pour l'insérer dans une table de liaison.
Quand j'utilise une requête INSERT classique, LastInsertId() me retourne bien le dernier Id inséré dans la table.
- PDO avec requête INSERT classique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$connectBDD = new PDO($dsn, $login, $mdp);
$insert ="INSERT INTO table(champ1, champ2) VALUES ('valeur1', 'valeur2');
$test = $connectBDD->exec($insert);
print $connectBDD->lastInsertId();
$connectBD=null;
Par contre en remplaçant cette requête par une procédure stockée, LastInsertId() me retourne 0
- Procédure Stockée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DELIMITER $$
CREATE PROCEDURE `database`.`InsertProcedure`(
  IN inChamp1 INT(2),
  IN inChamp2 VARCHAR(50))
BEGIN
  INSERT INTO table(
  champ1,
  champ2
)
VALUES(
  inChamp1,
  inChamp2
);
END $$
DELIMITER ;
- PDO avec Procédure Stockée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$connectBDD = new PDO($dsn, $login, $mdp);
$insert ="CALL InsertProcedure('valeur1', 'valeur2')";
$test = $connectBDD->exec($insert);
print $connectBDD->lastInsertId();
$connectBDD=null;
D'où vient le problème ? De la déclaration de ma procédure stockée ? Ou du fait que PDO::LastInsertId() ne fonctionne pas avec une procédure stockée ?

Merci de m'éclairer sur ce point. Il serait dommage que je ne puisse pas utiliser mes procédures stockées dans mon projet.