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

Requêtes MySQL Discussion :

Erreur SQL à l'insertion table relationnelle


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Points : 43
    Points
    43
    Par défaut Erreur SQL à l'insertion table relationnelle
    Bonjour tous !

    Voici l'erreur sql que je reçoit lors de l'insertion des données dans ma table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cannot add or update a child row: a foreign key constraint fails ('cybernet'.'site', CONSTRAINT 'fk_site_provider' FOREIGN KEY ('idprovider') REFERENCES 'provider' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION)
    Voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = 'INSERT INTO 'site'  ('id' ,'idsiteinterne' ,'idsiteprovider','site_name' ,'dateactivation' ,'dateinstallation' ,'adressesite' ,'installerpar' ,'idclient' ,'adresseIP' ,'adresseIPmanage' ,'emailsite' ,'idprovider' ,'service' ,'idetatsite' ,'idpays' ,'province' ,'telephone' ,'observation' ,'datecreation') VALUES (NULL, "'.mysql_escape_string($_POST['idsiteinterne']).'", "'.mysql_escape_string($_POST['idsiteprovider']).'","'.mysql_escape_string($_POST['site_name']).'", "'.mysql_escape_string($_POST['dateinstallation']('d-m-Y')).'" , "'.mysql_escape_string($_POST['dateactivation']('d-m-Y')).'", "'.mysql_escape_string($_POST['adressesite']).'",  "'.mysql_escape_string($_POST['installerpar']).'",  "'.mysql_escape_string($_POST['idclient']).'",  
    "'.mysql_escape_string($_POST['adresseIP']).'", "'.mysql_escape_string($_POST['adresseIPmanage']).'", "'.mysql_escape_string($_POST['emailsite']).'", "'.mysql_escape_string($_POST['idprovider']).'","'.mysql_escape_string($_POST['service']).'", "'.mysql_escape_string($_POST['province']).'", "'.mysql_escape_string($_POST['idetatsite']).'", "'.mysql_escape_string($_POST['province']).'", "'.mysql_escape_string($_POST['telephone']).'", "'.mysql_escape_string($_POST['observation']).'", "'.date('Y-m-d h:i:s').'")'; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    Bonjour,

    Fais un echo de ta requête SQL pour qu'on ait plutôt le code SQL qu'un mélange entre PHP et SQL, et le contenu des différentes variables.

    Notamment, vérifie le contenu de mysql_escape_string($_POST['idsiteprovider']), qui, visiblement, contient une valeur qui n'existe pas dans la table provider (d'où l'erreur).

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Points : 43
    Points
    43
    Par défaut
    Voici ma requête sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO `cybernet`.`site` (`id` ,`idsiteinterne` ,`idsiteprovider` ,`idsurvey` ,`site_name` ,`dateactivation` ,`dateinstallation` ,`adressesite` ,`installerpar` ,`idclient` ,`adresseIP` ,`adresseIPmanage` ,`emailsite` ,`idprovider` ,`service`,`idetatsite` ,`idpays` ,`province` ,`matriculeSite` ,`telephone` ,`observation` ,`datecreation`)
    VALUES (NULL , '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')
     
    MySQL a répondu: Documentation
    #1452 - Cannot add or update a child row: a foreign key constraint fails (`cybernet`.`site`, CONSTRAINT `fk_site_provider` FOREIGN KEY (`idprovider`) REFERENCES `provider` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
    Voici mes clés étrangères

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     KEY `fk_site_provider` (`idprovider`),
      KEY `fk_site_clients` (`idclient`),
      KEY `fk_site_etat_site` (`idetatsite`),
      KEY `fk_site_pays` (`idpays`)

  4. #4
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Et en copiant ta requête tu n'as pas vu que tu essaies d'insérer uniquement des valeurs NULL ou vides ?
    Pas étonnant que les clés étrangères ne soient pas satisfaites !

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 905
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 905
    Points : 14 822
    Points
    14 822
    Par défaut
    Tu n'as aucune valeur dans ta requête ..

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    Ah ben forcément, ça ne risque pas de fonctionner...
    Tu insères des chaînes vides dans tous les champs...
    Le problème semble plutôt se situer côté PHP : tes variables sont vides.

    [EDIT] : Ouach, le tir groupé de réponses

  7. #7
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Quel tir groupé !

  8. #8
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 83
    Points : 43
    Points
    43
    Par défaut
    Oui, je vois c'est à dire que lorsque j'essaie d'insérer à partir de mysql il fonctionne mais il y a aussi des petites erreurs tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1 ligne insérée.
    Identifiant de la ligne insérée : 3
    Warning: #1265 Data truncated for column 'adresseIP' at row 1
    Warning: #1265 Data truncated for column 'adresseIPmanage' at row 1
    Warning: #1264 Out of range value for column 'datecreation' at row 1

  9. #9
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    Quand on regarde le résultat du echo, il n'y a visiblement rien dans tes variables PHP...
    Pour expliquer les warnings, il nous faudrait la requête que tu exécutes et qui les génère, ainsi que la structure de la table (visiblement, tu tentes d'insérer des chaines de caractères trop longues pour la longueur prévue dans la base).

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Allez j'en rajoute une couche....

    Voila la poillade de ma journée, mon rayon de soleil c'est MySQL !!!

    A +

Discussions similaires

  1. [MySQL] Erreur sql d'insertion
    Par dolphi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/05/2011, 11h32
  2. Erreur SQL : Table/alias non unique
    Par albert69 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/11/2005, 18h31
  3. Insertion dans une table relationnelle
    Par etiennegaloup dans le forum Langage SQL
    Réponses: 22
    Dernier message: 01/11/2005, 18h39
  4. Réponses: 3
    Dernier message: 11/01/2005, 09h20
  5. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 12h38

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