J'ai un problème avec la liaison d'un paramètre dans une clause ORDER BY dans une instruction PDO. "orderBy" ne semble pas être passé à la requête car les résultats ne sont pas commandés comme ils sont supposés l'être. Lorsque j'utilise un nom de colonne tel que price
dans la requête plutôt qu'un paramètre, les résultats sont triés par cette colonne. Le code est:Pourquoi le paramètre de liaison dans la clause ORDER BY ne commande-t-il pas les résultats?
class Products {
const ORDER_BY_NAME='name';
const ORDER_BY_PRICE_PER_UNIT='price_per_unit';
const ORDER_BY_PRICE='price';
const ORDER_BY_MINIMUM_QUANTITY='minimum_quantity';
// function returns array of all products
public function getAllProducts($orderBy) {
$db=Registry::getVariable('db');
$pdoStatement=$db->prepare("SELECT name, minimum_quantity, price_per_unit, price, id FROM products ORDER BY :orderBy;");
$pdoStatement->bindParam(':orderBy', $orderBy, PDO::PARAM_STR);
$pdoStatement->execute();
return $pdoStatement->fetchAll(PDO::FETCH_ASSOC);
}
}
Plus tard j'appelle:
$products=new Products();
echo $products->getAllProducts(Products::ORDER_BY_PRICE);
Pourquoi pas: paramètre orderBy semblent être utilisés dans la requête?
Wow, 1 espace en retrait .. – ryeguy