Plusieurs enregistrements en une requête préparée

Résolu/Fermé
php-user - 5 mai 2015 à 11:58
 php-user - 6 mai 2015 à 14:37
Bonjour,

J'essaye de créer une requête préparée qui va me permettre d'ajouter plusieurs enregistrements en même temps dans une table.
Il s'agit d'enregistrer des questions et leurs réponses, effectivement je réalise un questionnaire en ligne.
Je dois récupérer les questions et les réponses qui leur sont associées dans une table. Et j'ai 17 questions et ses 17 réponses à enregistrer dans cette table.

Voici ma requête:
$secondQuery = $connexion->prepare('INSERT INTO ligne(question, reponse) VALUES(:question, :reponse),(:question, :reponse)(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse),(:question, :reponse)');
$secondQuery->execute(array(
    array(':question' => $question1, ':reponse' => $reponse1),
    array(':question' => $question2, ':reponse' => $reponse2),
    array(':question' => $question3, ':reponse' => $reponse3),
    array(':question' => $question4, ':reponse' => $reponse4),
    array(':question' => $question5, ':reponse' => $reponse5),
    array(':question' => $question6, ':reponse' => $reponse6),
    array(':question' => $question7, ':reponse' => $reponse7),
    array(':question' => $question8, ':reponse' => $reponse8),
    array(':question' => $question9, ':reponse' => $reponse9),
    array(':question' => $question10, ':reponse' => $reponse10),
    array(':question' => $question11, ':reponse' => $reponse11),
    array(':question' => $question12, ':reponse' => $reponse12),
    array(':question' => $question13, ':reponse' => $reponse13),
    array(':question' => $question14, ':reponse' => $reponse14),
    array(':question' => $question15, ':reponse' => $reponse15),
    array(':question' => $question16, ':reponse' => $reponse16),
    array(':question' => $question17, ':reponse' => $reponse17)));


J'ai ce message d'erreur: "Invalid parameter number: number of bound variables does not match number of tokens".

Un coup de pouce d'il vous plaît !
A voir également:

1 réponse

Bonjour,

Voici de quoi je me suis inspiré pour réaliser ma requête préparée avec plusieurs enregistrements en une seule requête. Eh oui j'ai fini par trouver.

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// insertion d'une ligne
$name = 'one';
$value = 1;
$stmt->execute();

// insertion d'une autre ligne avec des valeurs différentes
$name = 'two';
$value = 2;
$stmt->execute();
?>


Source -> Documentation php

http://php.net/manual/fr/pdo.prepared-statements.php

Bonne courage à ceux qui auront un problème similaire !
0