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 :

PDO Insertion multiple


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut PDO Insertion multiple
    Bonjour j'ai un code PDO qui me reteourne l'erreur suivante

    Coonection failed: SQLSTATE[42000]: Syntax error or access violation:1064 You have an error in SQL syntax
    Le message d'erreur n'est pas complet parce que je le reçois sur un téléphone portable.

    Voici le code . Si quelqu'un à une idée


    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php 
    define("DBHOST","localhost",TRUE);
    define("DBUSERNAME","root",TRUE);
    define("DBPASSWORD","***",TRUE);
    define("DBNAME","tuto",TRUE);
     
    //Récupération des données du sms
    $time = $_GET['time'];                        // Date et heure d'envoi
    $sender = $_GET['sender'];                   // Numéro de téléphone du Sender
    $tab = $_GET['text'];  
     
    // Etape 1 : séparation du préfixe et du reste
    sscanf($tab, '%s %s', $prefix, $codes); 
    // Etape 2 : développement de $codes en array
    // Astuce : On remplace tous les [espace]T par ¤[prefixe] T.
    // Puis on explode sur ¤.
    $tab_array = explode('¤', $prefix . str_replace(' n', "$sender $time $prefix n", $codes));
    // On change chaque code ACT T8 25 en "(ACT T8 25)"
    $callback = function($id,$dat,$lib,$type,$nb) {
       return "($id,$dat,$lib,$type,$nb)";
    };
    $tab_array = array_map($callback, $tab_array);
    // On peut maintenant l'imploder dans la requête SQL
     
    $query = "INSERT INTO table(id,dat,lib,types,nb) VALUES \n" . implode("\n", $tab_array) .';';
     
    $con = 'mysql:dbname='.DBNAME.';host='.DBHOST;
    try {
        $cmd = new PDO($con,DBUSERNAME,DBPASSWORD,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
        $affected = $cmd->exec($query);
     
        if($affected){ // $affected > 0
            echo "enregistrement reussi";
        } else {
            $myeCode = $stmt->errorCode();
            echo $myeCode;
        }
    }
    catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }
    ?>

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Points : 242
    Points
    242
    Par défaut
    bonjour,

    je pense que y a des virgules qui manquent dans ta requete
    exp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into table values (bloc1), (bloc2), (blocn);

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Comme le dit l'erreur, tu as une erreur de syntaxe dés la connection, du reste c'est quoi ces "\n"

    Tu doit en premier te connecter corectement avec gestion des erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $bdd = new PDO('mysql:host=localhost;dbname=tuto', 'root', '****');
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    Ensuite tu fait un prepare d'INSERTION

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $req = $bdd->prepare("INSERT INTO table(id,dat,lib,types,nb)  VALUES (:lid,:dat,:lib,:types,:nb)");  
    $req->execute(array( ':lid' => $uneid,  ':dat' => $dat,  ':lib' => $lib,  ':type' => $type,  ':nb' => $nb ));
    Ensuite autant d'execute que tu veux sur le même prepare!!!

Discussions similaires

  1. [PDO] insertion multiple avec PDO
    Par kate59 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 01/07/2011, 17h32
  2. procédure stockée insert multiple
    Par gigi34 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/09/2005, 10h37
  3. Insertion multiple à base de sous requête SELECT
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/04/2005, 16h34
  4. INSERT multiples avec : rs.AddNew et .Update
    Par M.Zip dans le forum ASP
    Réponses: 4
    Dernier message: 03/12/2004, 15h53
  5. pb d'insertions multiples
    Par devalender dans le forum SQL
    Réponses: 2
    Dernier message: 14/07/2004, 14h49

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