begin process at 2012 05 31 12:57:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Probleme d'execution de requêtes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme d'execution de requêtes

vendredi 8 février 2008 à 13:42:32 | Probleme d'execution de requêtes

Remy05

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 :
$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 essayé 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
Cordialement,
Rémy
vendredi 8 février 2008 à 13:44:24 | Re : Probleme d'execution de requêtes

Remy05

Désolé pour le double post , je pensais que le premier n'avait pas été posté, si un modo veut bien en effacer un , merci :)
vendredi 8 février 2008 à 14:48:25 | Re : Probleme d'execution de requêtes

sidf

salut
il serait interessant de voir le contenu exact de tes requetes
sachant que mysql_insert_id() retourne la valeur du dernier auto increment inséré
de type INT donc la 1ere des values insérées devrait être NULL



vendredi 8 février 2008 à 17:02:27 | Re : Probleme d'execution de requêtes

Remy05

En effet quand j'insert dans une table avec un champ clé en auto incrément je met ' ' en value, donc je ne pense pas que ça vienne de là :)

exemple pour la table client :
[code]
"INSERT INTO client (LoginClient, ...., TypeClient)  VALUES ('',..., '$typeClient')";
[/code]
je ne met pas tout les chamsp car la requete est assez conséquente ..
vendredi 8 février 2008 à 19:53:39 | Re : Probleme d'execution de requêtes

malalam

Administrateur CodeS-SourceS
Hello,

est-ce que tu échappes correctement les caractères dangereux pour ta requête, du genre une apostrophe dans la valeur ?
Dans tous les cas, tu devrais faire plusieurs choses :
- mettre une transaction afin de faire un rollback si une des requête échoue
- tester si tes requêtes réussissent ou échouent, donc
- logger dans un fichier les requêtes qui échouent.

Ce n'est que de cette manière que tu y verras plus clair.
lundi 11 février 2008 à 09:58:23 | Re : Probleme d'execution de requêtes

Remy05

Salut,

[quote]est-ce que tu échappes correctement les caractères dangereux pour ta requête, du genre une apostrophe dans la valeur ?[/quote]
Effectivement, pour ces requetes je n'y avait pas pensé, je vais rajouté mysql_real_escape_string() pour tout les champs rempli par le client.

Pour ce qui est de la transaction j'ai essayer avec :
[code]mysqli_autocommit($link, FALSE);
...
mysqli_commit($link);
mysqli_close($link);[/code]
Comme préciser dans le code mais cela ne fonctionne pas a priori, pour ce qui est du rollback je n'ai
pas vraiment comprit comment l'utiliser :/

[quote]- tester si tes requêtes réussissent ou échouent, donc [/quote]
Peut tu m'en dire plus sur la façon de procéder ?
ça pourrait m'être très utile en effet :)




lundi 11 février 2008 à 10:15:08 | Re : Probleme d'execution de requêtes

Remy05

Petite rectification, aprés relecture de mon code, mes champs sont bien protégés par un addslashes , donc l'erreur ne vient pas de la,  par contre je suis toujours intérréssé par une aide pour la transaction ou pour tester si une requête a bien été éxécutée :p




Cette discussion est classée dans : insert, client, requêtes, link, mysqli


Répondre à ce message

Sujets en rapport avec ce message

php5 insert into [ par manu7930 ] bonjour, j'ai une fonction insert into qui me semble correcte mais elle n'insert rien dans ma base: mysql_select_db("149224", $mysql_link); $sql= Clef etrangere [ par dykafr ] Bonjour a tous!Au fait  j'ai un probleme qui me fatique depuis plus d'une semaine,et la j'ai decider de faire appel a vous.Donc il se trouve que je su À propos de mysqli::multi_query [ par yoman64 ] Bonjour à tous,J'ai une petite question toute bête qui pourrait sans doute être résolu avec quelques test de ma part, mais j'aimerais mieux avoir une Derniere erreur et ca risque de marcher... [ par slhuilli ] Bonsoir,soit le code ci dessous    $link = mysqli_connect('localhost', 'root', '', 'essai');// le dernier parametre est le nom de la base    /* Vérifi Paypal + Panier d'achat + Session client ... [ par yank76 ] Salut à tous, Je vais essayer de vous expliquer rapidement mon problème ... Je dois faire un site avec exactement les mêmes fonctions que celui la Phpmyadmin SQL [ par xeroxiss ] Bonjour, Après avoir lu quelques explication sur ce problème je ne trouve pas de solution :(Voilà, mon soucis est que j'ai une table sql impossible a Php Insert ID [ par xeroxiss ] Bonjour tout le monde Voilà je me demandais juste un petit truc, et peut être que vous connaissez la réponse... J'ai deux tables mysql et un formulair Requête liste déroulante dans un formulaire [ par callmerv ] Bonjour et meilleurs voeux à tous pour 2008.Tout d'abord mon environnement technique :- PC sous XP Pro- EasyPhp 2.0.0.0- Apache 2.2.3- Php 5.2.0- MySq


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,092 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales