Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2010, 17h24   #1
Futur Membre du Club
 
Inscription : mai 2007
Messages : 115
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 115
Points : 19
Points : 19
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 :
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;
	}
totofe49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 17h28   #2
Modérateur
 
Inscription : septembre 2010
Messages : 6 998
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 998
Points : 8 311
Points : 8 311
quand tu fais un var_dump($query); ca donne quoi ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 17h46   #3
Futur Membre du Club
 
Inscription : mai 2007
Messages : 115
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 115
Points : 19
Points : 19
Code :
1
2
3
var_dump($query) :
 
string 'SELECT id,titre FROM pages WHERE tpl=:tpl AND rub=:rub ' (length=55)
totofe49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 17h57   #4
Modérateur
 
Inscription : septembre 2010
Messages : 6 998
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 998
Points : 8 311
Points : 8 311
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 :
1
2
3
bindParam(':tpl', $truc, PDO::PARAM_INT);
//et pas
bindParam(1, $truc, PDO::PARAM_INT);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 18h04   #5
Futur Membre du Club
 
Inscription : mai 2007
Messages : 115
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 115
Points : 19
Points : 19
merci beaucoup çà fonctionne impec.
totofe49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h06.


 
 
 
 
Partenaires

Hébergement Web