[MySQLi] Problème d'exécution de requêtes
Bonjour,
Dans le cadre d’un site e-commerce, lors de la validation d’une commande j’ai besoin d’effectuer une succession requêtes d’insertion dans différentes tables (exemple : client/produit/devis/liens).
La table liens ayant pour unique but de mettre en relation les données contenues dans les autres tables.
Dans la majorité des cas, tout fonctionne parfaitement, mais parfois, il arrive que la dernière requête ne s’exécute pas correctement. Ce qui a pour résultat de valider la commande pour le client (aucun message d’erreur de son coté) mais du coté administration, on se retrouve avec des données isolées dans la base et aucun lien entre elles, ce qui n’est pas pratique pour retrouver quel client a commandé quel produit…
J’aimerais dans un premier temps comprendre d’où peut venir se problème (client, code, hébergeur ?).
Et surtout trouver comment corriger cela ou faire en sorte que si l’une des requêtes ne s’exécute pas, les autres soient annulées aussi et retourner un message d’erreur.
J’ai essayé avec une transaction, mais a priori cela ne marche pas puisque l’erreur persiste parfois.
Voici une partie du code en question :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| $link = mysqli_connect('localhost','xxx', 'xxxxxxx','xxxxxxx');
if (!$link) {
die("Echec de la connexion ");
}
mysqli_autocommit($link, FALSE);
$SQLinsertclient = "INSERT INTO client (champs1,
,champsn)
VALUES ('$value1',
,'$valuen)";
mysqli_query($link,$SQLinsertclient);
$idClient =mysqli_insert_id($link);
$SQLinsertcommande = "INSERT INTO devis (
champs1,
, champsn)
VALUES ('$value1,
,'$valuen')";
mysqli_query($link,$SQLinsertcommande);
$idCommande =mysqli_insert_id($link);
$SQLliaison = "INSERT INTO `cppdc` ( ` champs1` , ` champs2` , ` champs3` , ` champs4` , ` champs5` )
VALUES ('$ value1,'$ value2,' value3,'$value4,'$value5)"; mysqli_query($link,$SQLliaison);
mysqli_commit($link);
mysqli_close($link); |
je précise aussi que j'ai essai en passant par les requêtes de type mysql avant d'utiliser les mysqli , mais cela ne change rien a mon problème.
Merci d’avance :D
Cordialement,
Rémy