Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/08/2011, 11h33   #1
Membre du Club
 
Inscription : janvier 2008
Messages : 705
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 705
Points : 66
Points : 66
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 :
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.
kate59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 09h58   #2
Membre confirmé
 
Homme Dominique
Première S
Inscription : juillet 2010
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 15
Localisation : France

Informations professionnelles :
Activité : Première S

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

Code :
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.
Dominique49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2011, 10h49   #3
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

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

Code :
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
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 13/09/2011, 11h02   #4
Membre confirmé
 
Homme Dominique
Première S
Inscription : juillet 2010
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 15
Localisation : France

Informations professionnelles :
Activité : Première S

Informations forums :
Inscription : juillet 2010
Messages : 252
Points : 228
Points : 228
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 :
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.
Dominique49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h38.


 
 
 
 
Partenaires

Hébergement Web