IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Fonction PDO erreur : : Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key c


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Points : 149
    Points
    149
    Par défaut Fonction PDO erreur : : Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key c
    Bonjour,
    cette fonction fonctionner nikel avant et la j'ai ce message:

    print_r($id_centres);
    Array ( [0] => 317 [1] => 318 [2] => 319 )
    print_r($id_centre);
    317

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function addMembreCentreMultiple($id_centres, $id_membre)
    {
        $sql = 'INSERT INTO membre_centre (id_categorie,id_membre)  VALUES (?, ?)';
        $requete = $this->db->prepare($sql);
     
        foreach($id_centres as $id_centre)
        {
     
            $requete->execute(array($id_centre, $id_membre));
        }
    }

    merci.

  2. #2
    Membre actif
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Points : 281
    Points
    281
    Par défaut
    Salut,
    je te conseillerai d’utiliser bindValue.
    cela résous généralement ce genre de pb. (voir EDIT plus bas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php
    public function addMembreCentreMultiple($id_centres, $id_membre)
    {
        $sql = 'INSERT INTO membre_centre (id_categorie,id_membre)  VALUES (:centre, :membre)';
        $requete = $this->db->prepare($sql);
     
        foreach($id_centres as $id_centre)
        {
     
            $requete->bindValue(':centre', $id_centre, PDO::PARAM_INT);
            $requete->bindValue(':membre', $id_membre, PDO:PARAM_INT);
            $requete->execute();
        }
    }
    essaye avec ça, et dis moi si ça marche mieux.
    a+;


    EDIT à 10h04


    Selon ton titre, le problème viendrais plutôt d'une "violation de contrainte". cela n'empêche pas que utiliser bindValue est chaudement conseillé.
    donc selon le message d'erreur qui est dans ton titre, c'est que tu essayes d'insérer une ligne dans une table sans doute gérée par InnoDB, dont un champs est une "foreign key child", c'est à dire un champs correspondant à un autre champs dans une autre table ... (je sais, je suis pas clair )
    Pourrais-tu nous montrer le code de création de cette table, et des tables liées ?
    merci.

  3. #3
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    La réponse peut paraître niaise mais pour moi, dans un tableau, y a des virgules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => 317 [1] => 318 [2] => 319 )
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  4. #4
    Membre actif
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Points : 281
    Points
    281
    Par défaut
    Citation Envoyé par radicaldreamer Voir le message
    La réponse peut paraître niaise mais pour moi, dans un tableau, y a des virgules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => 317 [1] => 318 [2] => 319 )
    à mon avis il (elle) a écrit ça à la volée juste pour montrer le contenu des variables ...

    mais là, ce qu'il nous faut absolument, c'est le code de création de la table !
    pour ça, il suffit de faire exporter etc.

Discussions similaires

  1. Réponses: 13
    Dernier message: 27/08/2015, 17h46
  2. Réponses: 2
    Dernier message: 06/03/2013, 17h20
  3. Réponses: 2
    Dernier message: 11/11/2011, 19h25
  4. Réponses: 9
    Dernier message: 24/04/2011, 17h03
  5. Réponses: 0
    Dernier message: 12/12/2007, 21h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo