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 :

Invalid parameter number: number of bound variables does not match number of tokens [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut Invalid parameter number: number of bound variables does not match number of tokens
    bonsoir

    j' ai um souci sur une requete en pdo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        $sql_history = "INSERT INTO `phplist_user_user_history` (`id`, `userid`, `ip`, `date`, `summary`, `detail`, `systeminfo`) VALUES (NULL, :userid, :ip, 'NOW()', 'Import_by_script', 'subscription', 'HTTP_USER_AGENT = :useragent REMOTE_ADDR = :ip2')";
            $stm2 = $db->prepare($sql_history);
     
            $stm2->bindParam(':userid', $userid); 
            $ip = get_client_ip();       
            $stm2->bindParam(':ip', $ip);        
            $stm2->bindParam(':useragent', $_SERVER['HTTP_USER_AGENT']);
            $stm2->bindParam(':ip2', $ip); 
            $res = $stm2->execute();
    je me retrouve avec le message:
    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in
    j'ai pourtant le même nombre de parametre?

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql_history = "INSERT INTO `phplist_user_user_history` (`id`, `userid`, `ip`, `date`, `summary`, `detail`, `systeminfo`) VALUES (NULL, :userid, :ip, 'NOW()', 'Import_by_script', 'subscription', :systeminfo)";
    $stm2 = $db->prepare($sql_history);
    $stm2->bindParam(':userid', $userid); 
    $ip = get_client_ip();       
    $stm2->bindParam(':ip', $ip);        
    $stm2->bindParam(':systeminfo', 'HTTP_USER_AGENT = '.$_SERVER['HTTP_USER_AGENT'].' REMOTE_ADDR = '.$ip);
    $res = $stm2->execute();

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut merci mais
    j'avais essayé et dans ce cas j'ai l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught Error: Cannot pass parameter 2 by reference in

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Remplace bindParam par bindValue

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut
    c'est effectivement ce que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try { 
            $sql_history = "INSERT INTO `phplist_user_user_history` (`id`, `userid`, `ip`, `date`, `summary`, `detail`, `systeminfo`) VALUES (NULL, :userid, :ip, NOW(), 'Import_by_script', 'subscription', :systeminfo)";
                $stm2 = $db->prepare($sql_history);
                $stm2->bindValue(':userid', $userid); 
                $ip = get_client_ip();       
                $stm2->bindValue(':ip', $ip);        
                $stm2->bindValue(':systeminfo', 'HTTP_USER_AGENT = '.$_SERVER['HTTP_USER_AGENT'].' REMOTE_ADDR = '.$ip);
                $res = $stm2->execute();
            echo "\nPDO::errorCode(): ", $db->errorCode();
        } catch(PDOException $e) {
            echo $e->getMessage();
        }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/11/2014, 17h43
  2. Réponses: 6
    Dernier message: 01/07/2011, 18h06
  3. Number of records does not match index
    Par sniperpro dans le forum Paradox
    Réponses: 10
    Dernier message: 08/12/2010, 16h28
  4. [MySQL] Number of bound variables does not match number of tokens
    Par grenoult dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/04/2010, 10h18
  5. Réponses: 1
    Dernier message: 10/05/2006, 13h11

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