Почему параметр связывания в предложении ORDER BY не упорядочивает результаты? - PullRequest
1 голос
/ 25 мая 2010

У меня проблема с привязкой параметра в предложении ORDER BY в инструкции PDO. «orderBy», похоже, не передается в запрос, так как результаты не упорядочены, как это должно быть. Когда в запросе вместо имени используется имя столбца, например price, результаты сортируются по этому столбцу. Код:

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

Позже я звоню:

 $products=new Products();

 echo $products->getAllProducts(Products::ORDER_BY_PRICE);

Почему параметр: orderBy не используется в запросе?

1 Ответ

5 голосов
/ 25 мая 2010

Привязка параметров предназначена для использования со значениями. За ORDER BY фактически следует имя поля, а не строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...