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;
	}