Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cannot add or update a child row: a foreign key...

Sujet résolu
    26 mars 2021 à 21:55:10

    Bonjour,

    Je suis débutante (BTS SIO) et j'ai beau chercher un peu partout, je n'arrive pas à trouver la bonne combinaison pour insérer les données de mon formulaire dans ma table associative. J'ai testé tout ce que j'ai trouvé, rien ne fonctionne et sans doute que je m'y prends mal...

    Je cherche à insérer une donnée dans ma table associative (Id composée de deux clés étrangères) et le message est toujours le même : #1452 - Cannot add or update a child row: a foreign key constraint fails.

    j'ai essayé ça :

    $rqdiploetudiant = $dbco->prepare("UPDATE diplome_etudiant 
    SET Diplome_Etudiant_DateObtention = $Diplome_Etudiant_DateObtention 
    WHERE diplome_etudiant.Diplome_Id == $Diplome_Id AND diplome_etudiant.Etudiant_Id == $_SESSION[EId]");

    et ça et bien d'autres :

    INSERT INTO diplome_etudiant 

    (Diplome_Etudiant_DateObtention, diplome_etudiant.Diplome_Id, diplome_etudiant.Etudiant_Id) 

    VALUES (2020-05-12,3, 2) 

    ON DUPLICATE KEY UPDATE 

    diplome_etudiant.Diplome_Id =3, diplome_etudiant.Etudiant_Id = 2

    Je me doute que la réponse est dans l'apprentissage mais c'est pour un projet scolaire au délai super court et j'ai besoin d'un peu d'aiguillage si quelqu'un...

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2021 à 23:45:54

      Bonjour,

      L'erreur t'indique que tu essayes de mettre une valeur pour une des deux colonnes de ta clé composée qui n'existe pas dans la table de référence...

      Avant d'insérer ou de mettre à jour la table de relation, il faut vérifier que les id existent bien dans les tables "sources".

      Peux-tu nous poster le code SQL de ta base : tables, colonnes, types et clés, ainsi que les valeurs existantes dans les 3 tables en jeu dans ton exemple (diplôme, étudiant et diplome_etudiant) ?

      -
      Edité par Benzouye 26 mars 2021 à 23:46:55

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        8 mai 2021 à 19:27:58

        Bonjour Benzouye,

        Merci pour la réponse ! J'ai fini par trouver. En fait je mélangeais un peu tout : la condition d'insertion dans les tables depuis le formulaire et la formulation de la requête... 

        Pour finir, ça a donné un truc qui marche, même si c'est sans doute pas optimisé du tout :s

        if ($Diplome_Id1) {
        $rqdiploetudiant1 =  $dbco->prepare (
        "INSERT INTO diplome_etudiant (diplome_etudiant.Diplome_Id, diplome_etudiant.Etudiant_Id, Diplome_Etudiant_DateObtention)
        VALUES (
        (SELECT Diplome_Id FROM diplome WHERE diplome.Diplome_Id = $Diplome_Id1),
        (SELECT Etudiant_Id FROM etudiant WHERE etudiant.Etudiant_Id = ".$_SESSION["EId"]."),
        '$Diplome_Etudiant_DateObtention1'
        )");
        $rqdiploetudiant1->execute();
        }



        • Partager sur Facebook
        • Partager sur Twitter

        Cannot add or update a child row: a foreign key...

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown