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 :

Insert en boucle [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Points : 62
    Points
    62
    Par défaut Insert en boucle
    Bonjour à tous,

    Je me remets à PDO un petit peu en ce moment (après un long passage sous Doctrine), et je suis face à un problème pour lequel je ne trouve ni d'explications ni de solution.

    Je dispose d'une table "averages", avec 4 colonnes : DATETIME datetime, SMALLINT amplitude, INT gem_to_gold, INT gold_to_gem.

    Cette table représente un point d'une moyenne mobile, d'une certaine amplitude. Mon problème vient lorsque je souhaite insérer 2 points à la fois. J'ai une classe PointManager dont le code est le suivant :
    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
    <?php
     
    include_once('DB.class.php');
     
    class MovingAverageManager {
     
        public function addToDatabase($points) {
            $db = new DB();
            $connexion = $db->getConnexion();
            $request = $connexion->prepare('INSERT INTO averages VALUES(:datetime, :amplitude, :gem_to_gold, :gold_to_gem)');
            foreach ($points as $point) {
                $request->bindParam(':datetime', $point->getDatetime());
                $request->bindParam(':amplitude', $point->getAmplitude());
                $request->bindParam(':gem_to_gold', $point->getGemToGold());
                $request->bindParam(':gold_to_gem', $point->getGoldToGem());
                $request->execute();
            }
        }
    }
    Rien de très compliqué donc. Pourtant, lorsque j'exécute ce script, PDO ne m'ajoute en base de données que le premier des deux points (au sens lecture de haut en bas). Le second est tout simplement ignoré. Une idée d'où vient le problème ?

    Merci d'avance pour votre aide

  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
    As-tu fais un debugage basique comme afficher les valeurs dans ton foreach ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Points : 62
    Points
    62
    Par défaut
    Salut, et merci de ta réponse.

    Ton idée a été la bonne car je viens de régler le problème en faisait un débuggage de la boucle. En fait cela ne vient pas du tout de PDO mais de mon schéma de base de données.
    En effet, la clé primaire était datetime. Or les deux tuples que je voulais enregistrer avaient le même datetime, ce qui ne déclenchait l'enregistrement que du premier uniquement !

    Je vais donc me renseigner pour faire une clé primaire composée de deux colonnes.

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insert into + boucle
    Par Nana35 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 13/11/2008, 09h04
  2. requête insert avec boucle ?
    Par Kropernic dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/09/2008, 15h24
  3. INSERT et boucle
    Par Interface dans le forum Langage
    Réponses: 9
    Dernier message: 25/09/2007, 18h06
  4. INSERT par boucle ?
    Par dunbar dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2006, 11h43
  5. [Conception] INSERT par boucle ?
    Par dunbar dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/08/2006, 15h06

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