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 :

requete PDO et bindParam


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 118
    Points : 49
    Points
    49
    Par défaut requete PDO et bindParam
    Bonjour,
    j'ai une fonction qui sélectionne une liste en utilisant PDO et les place holders.
    le souci c'est que je n'arrive pas à comprendre pour quoi j'ai cette erreur :

    Requête impossible
    SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

    merci pour votre aide

    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
    43
    44
    45
     
    // utilisation de la fonction
    require_once 'Mysql.php';
    $db = new Mysql();
    $listesPages = $db->getListe(
    	array(
    		"table" => pages,
    		"fields" => 'id,titre',
    		"condition" => array("tpl"=>2, "rub"=>1)
    	)
    );
     
    public function getListe($arrayReq){
     
    		$conx = Mysql::connectDb();
    		$table = $arrayReq['table'];
    		$fields = (!isset($arrayReq['fields'])) ? '*' : $arrayReq['fields'];
     
    		$arrayPH = array_keys($arrayReq['condition']);
    		for($k=0; $k<count($arrayPH); ++$k){
    			$strHP .= $arrayPH[$k].'=:'.$arrayPH[$k];
    			if( (count($arrayPH)>1) && ($k < count($arrayPH)-1) ){
    				$strHP .= ' AND ';
    			}
    		}
     
    		try {
    			$query = 'SELECT '.$fields.' FROM '.$table.' WHERE '.$strHP.' ';
    			$requete = $conx->prepare($query);
    			$arrayVals = array_values($arrayReq['condition']);
    			for($v=0; $v<count($arrayVals); $v++){
    				$requete->bindParam($v+1, $arrayVals[$v], PDO::PARAM_INT);
    			}
    			$requete->execute();
    			$return = $requete->fetchAll();
    		}
    		catch (PDOException $e){
    			echo "Requête impossible" . 
    			"<br/>" . $e->getMessage().
    			"<br/> FILE : " . $e->getFile().
    			"<br/> LINE : " . $e->getLine();
    			die();
    		}
    		return $return;
    	}

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    quand tu fais un var_dump($query); ca donne quoi ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 118
    Points : 49
    Points
    49
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var_dump($query) :
     
    string 'SELECT id,titre FROM pages WHERE tpl=:tpl AND rub=:rub ' (length=55)

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par totofe49 Voir le message
    var_dump($query) :

    string 'SELECT id,titre FROM pages WHERE tpl=:tpl AND rub=:rub ' (length=55)
    donc tu dois bind sur :tpl et :rub, ton bindParam dois etre du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bindParam(':tpl', $truc, PDO::PARAM_INT);
    //et pas
    bindParam(1, $truc, PDO::PARAM_INT);

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 118
    Points : 49
    Points
    49
    Par défaut
    merci beaucoup çà fonctionne impec.

Discussions similaires

  1. [PDO] Les requete PDO ne prennent pas en compte la premier ligne de résultat
    Par -Fly- dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/03/2012, 21h59
  2. [PDO] resultat requete PDO sous forme de tableau
    Par kate59 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/08/2011, 18h57
  3. [MySQL] Requete PDO et LIMIT de SQL
    Par heretik25 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/06/2011, 11h25
  4. [Système] PDO et bindParam() erreur.
    Par Rohann dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2006, 18h18
  5. [SQL] [php] PDO - fonction BindParam
    Par fadeninev dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 23/06/2006, 15h36

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