Souci avec PHP Mysqlserver [Résolu/Fermé]

Signaler
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018
-
Messages postés
12903
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 novembre 2020
-
Bonjour Chers Tous,

J'ai besoin d'aide SVP

Voici l'erreur que je rencontre :

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`shop`.`comments`, CONSTRAINT `items_comment` FOREIGN KEY (`item_id`) REFERENCES `items` (`Item_ID`) ON DELETE CASCADE ON UPDATE CASCADE)' in C:\wamp\www\Admin\items.php on line 98


Voici la ligne 98 : $stmt->execute(array('zcomment' => $comment, 'zitemid' => $itemid, 'zuserid' => $userid));

Merci de m'aider SVP

2 réponses

Messages postés
29946
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 novembre 2020
2 915
Bonjour,

Yg_be t'a donné les informations nécéssaires à la compréhension de ton erreur...
Si tu ne comprends pas, et pour que l'on puisse t'aider.. il nous faut :

- La structure de tes tables (un dump sql serait pas mal)
- Le code PHP qui provoque cette erreur (celui contenant ta requête)

NB: Pour poster du code sur le forum, il faut utiliser la coloration syntaxique (voir ici pour les explications : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code )
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018

J'obtiens l'erreur lorsque j'ajoute cette ligne :
$stmt->execute(array('zcomment' => $comment, 'zitemid' => $itemid, 'zuserid' => $userid)); 


Et aussi, le résultat du $itemid = 12 équivaut à l'Item du Speaker pourtant je suis sur la page de l'ITEM Hammer afin d'ajouter un commentaire à l'article Hammer
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018

En ce moment, lorsque je veux ajouter un commentaire dans le Item Hammer qui a pour itemid= 19, cela prend en compte le itemid = 12 de l'Item Speaker, le commentaire s'affiche bien dans le Item Speaker alors qu'il devrait s'afficher dans le Item Hammer
Et tous les autres Items, lorsque je veux ajouter un commentaire, cela m'affiche l'erreur suivante :
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`shop`.`comments`, CONSTRAINT `items_comment` FOREIGN KEY (`item_id`) REFERENCES `items` (`Item_ID`) ON DELETE CASCADE ON UPDATE CASCADE)' in C:\wamp\www\Admin\items.php on line 98

( ! ) PDOException: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`shop`.`comments`, CONSTRAINT `items_comment` FOREIGN KEY (`item_id`) REFERENCES `items` (`Item_ID`) ON DELETE CASCADE ON UPDATE CASCADE) in C:\wamp\www\Admin\items.php on line 98
Messages postés
12903
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 novembre 2020
722 >
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018

tu ne nous as montré qu'une partie de ton code, celle où le message d'erreur est affiché.
cela semble être la conséquence d'une erreur de logique qui se produit à la ligne
$itemid = $item['Cat_ID'];
, ou avant.
je me demande si tu ne mélanges pas ID dans la table categories avec Item_ID dans la table items.
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018

Oui effectivement, je me suis un peu mélangé. Je me suis fais aidé aussi et j'ai trouvé d'où l'erreur venait.
Merci infiniment pour ton assistance, cela m'a mis sur le chemin.
Messages postés
12903
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 novembre 2020
722 >
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018

parfait, peux-tu alors marquer le sujet comme résolu (via la roue dentée à droite du titre)?
Messages postés
12903
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 novembre 2020
722
bonjour, ta base de données inclut cette contrainte:
 CONSTRAINT `items_comment` FOREIGN KEY (`item_id`) REFERENCES `items` (`Item_ID`) ON DELETE CASCADE ON UPDATE CASCADE 

je suppose que tu sais pourquoi.
et le changement que tu essaies de faire via php ne respecte pas cette contrainte.
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018

Okay,
J'ai crée des Items (Exemple: Speaker) et je veux ajouter des commentaires, lorsque j'écris le commentaire, que je valide j'ai le message d'erreur : <code>Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`shop`.`comments`, CONSTRAINT `items_comment` FOREIGN KEY (`item_id`) REFERENCES `items` (`Item_ID`) ON DELETE CASCADE ON UPDATE CASCADE)' in C:\wamp\www\Admin\items.php on line 98></code

Pour la contrainte, c'est pour que lorsque j'effectue une modification soit Update ou Delete sur le User ou la Catégorie ou ou la Itemcela prenne en compte les tables qui sont liées
Messages postés
12903
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 novembre 2020
722 >
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018

quand je te demande des explications supplémentaires, il est inutile de répéter ce que tu as déjà expliqué, et de redonner les mêmes informations. il est plus utile de donner d'autres informations.

explique-nous ton contexte, qu'essaies-tu de réaliser? modifies-tu un programme qui fonctionnait, crées-tu un nouveau programme, une nouvelle base de données?

ensuite, explique aussi quelle requête SQL tu exécutes en ligne 98. insert ou update, dans quelle table?

la contrainte fait plus que ce que tu décris: elle empêche de créer des enregistrements non liés (Cannot add or update a child row).
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018

$stmt = $con->prepare("INSERT INTO comments(comment, status, comment_date, item_id, user_id) VALUES(:zcomment, 0, NOW(), :zitemid, :zuserid)");

Ligne 98 : $stmt->execute(array('zcomment' => $comment, 'zitemid' => $itemid, 'zuserid' => $userid));
Messages postés
12903
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
3 novembre 2020
722 >
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018

est-ce que tu as dans la table items un enregistrement ayant la valeur de la variable $itemid dans le champ Item_ID?
Messages postés
17
Date d'inscription
mercredi 5 août 2015
Statut
Membre
Dernière intervention
19 avril 2018

J'apprends à créer un site ecommerce, la contrainte créé j'avais des difficultés(les mêmes erreurs) là dessus, j'ai vider ma table et j'ai repris l'enregistrement c'est passé. Donc tout marchait très bien, et arriver au stade d'ajout des commentaires, la même erreur est revenue