Bonjour tout le monde  
  
 
J'ai un soucis avec php et l'extension pdo. J'ai bien cherché sur divers topics ou sur google mais je n'arrive pas à trouver d'informations pour m'aider.
 
Je suis sur MySQL et j'ai une procédure toute simple :
 
Code :
 - CREATE PROCEDURE `test`(
 -     p_name VARCHAR(155))
 - BEGIN
 -     INSERT INTO test (name) VALUES (p_name);
 -     SELECT last_insert_id() AS Result;
 - END
 
  | 
 
Côté PHP, j'ai le code suivant :
 
Code :
 - $db = new PDO("mysql:host=192.168.1.200;port=3307;dbname=mbd","root","password" );
 - $db->beginTransaction();
 - $query = $db->prepare("CALL test (?)" );
 - $query->bindValue(1, 'blablabla', PDO::PARAM_STR);
 - $query->execute();
 - $db->commit();
 - $result = $res->fetchAll(PDO::FETCH_ASSOC);
 - if (is_array($result)&&count($result)>0)
 - 	echo "ID=".$result[0]["Result"];
 
  | 
 
J'ai supprimé les contrôles de mon code pour simplifier l'exemple.
 
Lorsque j'exécute ma page PHP, tout se passe bien : la transaction se lance, la requête est exécutée, ma transaction est validée et j'ai bien mon ID qui s'affiche. A chaque actualisation de ma page, mon ID s'incrémente, signe que mon autoincrement dans la base fonctionne.
 
Et pourtant ! Je n'ai strictement aucun enregistrement dans ma table `test` ! Pourtant, si j'exécute le même bout de code sans transaction ça fonctionne. Idem côté Mysql : si je fais appel à ma procédure, ça fonctionne aussi. Si je garde les transactions PDO mais qu'à la place d'une requête préparées j'utilise ça :
 
Code :
 - $db->query("CALL test ('blablabla')";
 
  | 
 
Ça fonctionne aussi...  
  
 
Alors quoi ? Une incompatibilité avec les transactions, les requêtes préparées et mysql ?  
 
Quelqu'un a une idée de l'origine de ce problème ?  
 
Merci pour vos retours  
 
Message édité par matheo265 le 16-06-2019 à 12:01:45