我在绑定PDO语句中的ORDER BY子句中的参数时遇到问题。“ orderBy”似乎没有传递给查询,因为结果没有按照预期的那样进行排序。当我price在查询中使用列名而不是参数时,结果将按 该列排序。代码是:
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参数似乎未在查询中使用?
参数绑定旨在与值一起使用。实际上,ORDER BY后跟一个字段名称,而不是字符串。