Bonsoir à tous,
en fait je ne viens pas spécialement pour un problème mais juste pour une confirmation de déduction.
Avant je faisais ceci :
Cela dit la requête ne fonctionnait pas...
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 function stock_element($marque,$modele,$type,$debut,$nbMessages) { $param = array(); $param[":debut"]=$debut; $param[":nbMessages"]=$nbMessages; ... if ($type!=-1) { $sql.='AND stock.Type=:type '; $param[":type"]=$type; } $sql.='ORDER BY Marque ASC '; $sql.='LIMIT :debut, :nbMessages'; $statement=$db->prepare($sql); $statement->execute($param); $result=$statement->fetchAll(); ...
Sachant que LIMIT posait souvent des soucis, j'ai commencé par supprimé cette ligne pour vérifier que le reste de ma requête était valide ...
Ceci étant fait je me suis un peu plus penché sur le pourquoi de ça marchait pas.
La seule conclusion que j'ai pu en tirer c'est que des paramètres sans signe de comparaison devant ne peuvent fonctionner sour PDO, puisque en faisant comme suit, le code fonctionne :
Alors .... vrai ou faux ?
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 function stock_element($marque,$modele,$type,$debut,$nbMessages) { $param = array(); $param[":debut"]=$debut; $param[":nbMessages"]=$nbMessages; ... if ($type!=-1) { $sql.='AND stock.Type=:type '; $param[":type"]=$type; } $sql.='ORDER BY Marque ASC '; $sql.='LIMIT '.$debut.','.$nbMessages; $statement=$db->prepare($sql); $statement->execute($param); $result=$statement->fetchAll(); ...
Ou en d'autres termes comment faire un LIMIT avec des paramètres ? (comme le reste de mes requêtes)
Par avance merci
Partager