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 :

test de boucle de requête


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut test de boucle de requête
    Bonjour , je test un script avec une boucle pour enregistrer 2 valeurs avec une requête préparé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $bdd = new PDO('mysql:host=localhost; dbname=test','root','test');
     
    $nombre = array('un','deux','trois','quatre','cinq');
    $sql = "INSERT INTO registry(name,value) VALUES(name=:name,value=:value)";
    $req = $bdd->prepare($sql);
     
    $i=1;
    foreach($nombre as $N)
    {
    	echo $N."<br/>";
    	$req->execute(array("name"=>$N,"value=$i"));
    	$i++;
    }
    j'ai une erreur

    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /var/www/moodle24/moodle/sql.php on line 12 Call Stack: 0.0001 330408 1. {main}() /var/www/moodle24/moodle/sql.php:0 0.0004 333744 2. PDOStatement->execute() /var/www/moodle24/moodle/sql.php:12 deux
    voici la table registry
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE IF NOT EXISTS `registry` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) NOT NULL,
      `value` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

    pour insérer ou lire il faut toujours utiliser execute() , ou pour insérer il est nécessaire d'utiliser exec().

    quelle est mon erreur , je vous remercie d'avance pour vos réponses

  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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req->execute(array(":name"=>$N,":value"=>$i));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Salut,

    Le probleme vient de ton execute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req->execute(array(":name"=>$N,":value" => $i));

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    merci

    j'ai donc ajouter les ":"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $nombre = array('un','deux','trois','quatre','cinq');
    $sql = "INSERT INTO registry(name,value) VALUES(name=:name,value=:value)";
    $req = $bdd->prepare($sql);
     
    $i=1;
    foreach($nombre as $N)
    {
    	echo $N."<br/>";
    	$req->execute(array(":name"=>$N,":value=$i"));
    	$i++;
    }
    j'ai toujours l'erreur
    un
    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /var/www/moodle24/moodle/sql.php on line 12 Call Stack: 0.0003 330408 1. {main}() /var/www/moodle24/moodle/sql.php:0 0.0025 333752 2. PDOStatement->execute() /var/www/moodle24/moodle/sql.php:

  5. #5
    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
    Par défaut
    Tu as mal recopié la ligne
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    oui en effet la flèche n'est présente en plus j'aurai du le voir ce n' est pas colorier correctement, dans ma base je n'ai que des 0 dans le champs value et name

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $bdd = new PDO('mysql:host=localhost; dbname=moodle','root','test');
     
    $nombre = array('un','deux','trois','quatre','cinq');
    $sql = "INSERT INTO registry(name,value) VALUES(name=:name,value=:value)";
    $req = $bdd->prepare($sql);
     
    $i=1;
    foreach($nombre as $N)
    {
    	echo $N."<br/>";
    	$req->execute(array(":name"=>$N,":value"=>$i));
    	$i++;
    }
    Code sql : 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
    CREATE TABLE IF NOT EXISTS `registry` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) NOT NULL,
      `value` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;
     
    --
    -- Contenu de la table `registry`
    --
     
    INSERT INTO `registry` (`id`, `name`, `value`) VALUES
    (1, '0', 0),
    (2, '0', 0),
    (3, '0', 0),
    (4, '0', 0),
    (5, '0', 0),
    (6, '0', 0),
    (7, '0', 0),
    (8, '0', 0),
    (9, '0', 0),
    (10, '0', 0),
    (11, '0', 0),
    (12, '0', 0),
    (13, '0', 0),
    (14, '0', 0),
    (15, '0', 0);

  7. #7
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "INSERT INTO registry(name,value) VALUES(:name,:value)";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    merci sabotage maintenance ça fonctionne

    j'avais mis un égal car j'avais a réfléchis et prendre bêtement l'exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM prod_user WHERE id=:id ";


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

Discussions similaires

  1. Test de performance sur requête
    Par rodrigue62 dans le forum SQL
    Réponses: 1
    Dernier message: 01/10/2009, 03h03
  2. [SQL] Boucle et requête
    Par dafalri dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/08/2006, 14h03
  3. Boucle dans requête SQL.
    Par Philou1313 dans le forum ASP
    Réponses: 3
    Dernier message: 30/06/2006, 21h50
  4. [SQL] Boucle de requête SQL
    Par xender dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/05/2006, 11h57
  5. [MySQL] Affichage du menu en boucle après requête effectuer
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 08/02/2006, 14h44

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