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 :

Insertion de données variables grâce à une requête préparée


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Insertion de données variables grâce à une requête préparée
    Bonjour,
    je travaille sur un script qui lit un fichier texte, récupère les données et les stocke dans des variables ensuite, il insère ces données stockées dans les variables dans les champs de mes tables de ma base de données.
    j'arrive à lire mon fichier texte et aussi à récupérer les données mais j'arrive pas à les insérer dans mes tables de base de données, le problème c'est qu'il m'affiche aucune erreur quoiqu'il les insère pas.
    Voici un exemple de mon script dans lequel je récupère une seule donnée et je l'insère dans une table constituée de deux champs;

    id: // de type auto incrément

    project: de type varchar

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
    try
    {
    $bdd = new pdo ('mysql:host=localhost;dbname=test', 'root', '');
    echo 'Connexion réussie';
    }
    catch (Exception $e)
    {
     die('Erreur : '. $e->getMessage());
     }
     $monfichier = fopen("monfichier", "r");
        if ($monfichier)
        {
           while (!feof($monfichier))
           {
            $cl = fgets($monfichier);
                if (stristr($cl,'PROJECT:') !== false)
                {
                List($part, $project) = explode(":", $cl);
     
                $req = $bdd->prepare('INSERT INTO affaires(Projet) VALUES(:Projet)');
                $req->execute(array(
                    'Projet'=> $project));
                }
                }
     
     
     
    fclose($monfichier);
        }
    ?>
    j'ai même essayé avec ça!
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?php
    try
    {
    $bdd = new pdo ('mysql:host=localhost;dbname=test', 'root', '');
    echo 'Connexion réussie';
    }
    catch (Exception $e)
    {
     die('Erreur : '. $e->getMessage());
     }
     $monfichier = fopen("fichier.txt", "r");
        if ($monfichier)
        {
           while (!feof($monfichier))
           {
            $cl = fgets($monfichier);
                if (stristr($cl,'PROJECT:') !== false)
                {
                List($part, $project) = explode(":", $cl);
     
                $req = $bdd->prepare('INSERT INTO affaires(Projet) VALUES(:Projet)');
                $req->bindParam (':Projet', $project, PDO::PARAM_STR);
                $req->execute();
                }
                }
     
     
     
    fclose($monfichier);
        }
    ?>
    pouvez vous m'aider à connaitre mon erreur , Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Active les erreurs PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    il m'a affiché cette erreur:
    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 (`test`.`affaires`, CONSTRAINT `affaires_ibfk_1` FOREIGN KEY (`Idclient`) REFERENCES `clients` (`Idclient`) ON DELETE CASCADE ON UPDATE CASCADE)' in C:\wamp\www\test\insertion.php on line 33
    c'est vrai que la table affaires contient une clé étrangère idclient mais c'est quoi la relation avec ce que je veux insérer?

    j'ai fait un petit test pour voir si c'est bien la clé étrangère qui me cause le problème et je vous confirme maintenant que c'est l'idclient qui me cause le problème, comment je peux résoudre ce problème merci.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ne peux pas insérer un "projet" sans indiquer "idclient"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par sarah8590 Voir le message
    je l'insère dans une table constituée de deux champs;

    id: // de type auto incrément

    project: de type varchar
    Citation Envoyé par sarah8590 Voir le message
    la table affaires contient une clé étrangère idclient mais c'est quoi la relation avec ce que je veux insérer?
    Il y a comme une incohérence entre ces deux descriptions.

    Est-ce qu'on pourrait avoir la structure de ta table (et éventuellement des tables associées) ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [MySQL] Insertion données avec une requête préparée
    Par Mikma dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 23/05/2013, 21h59
  2. Insertion des données xml avec une requête SQL
    Par Rymaya dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 06/12/2011, 10h22
  3. Insertion des données xml avec une requête SQL
    Par Rymaya dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/11/2011, 17h50
  4. Une variable dans une requête INSERT
    Par lacombefr dans le forum Développement
    Réponses: 5
    Dernier message: 17/01/2008, 11h37
  5. Une variable dans une requête INSERT
    Par lacombefr dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 17/01/2008, 11h37

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