-1
我有一个查询:PDO报价
SELECT * FROM products WHERE 1=1 ORDER BY :order_by :order_dir LIMIT :limit OFFSET :offset
我的参数数组:
Array
(
[order_by] => price
[order_dir] => ASC
[limit] => 50
[offset] => 0
)
而且我有bindValues功能:
public function query($sql, $params=array(), $limit = null, $offset = null){
try {
if (!is_null($offset) && !is_null($limit)) {
$sql .= ' LIMIT :limit OFFSET :offset';
$params['limit'] = (int)$limit;
$params['offset'] = (int)$offset;
}
$stmt = $this->database->prepare($sql);
foreach($params as $key => $value) {
if(is_int($value)) {
$param = PDO::PARAM_INT;
} elseif(is_bool($value)) {
$param = PDO::PARAM_BOOL;
} elseif(is_null($value)) {
$param = PDO::PARAM_NULL;
} elseif(is_string($value)) {
$param = PDO::PARAM_STR;
} else {
$param = FALSE;
}
if($param) $stmt->bindValue(":$key", $value, $param);
}
$stmt->execute();
return $stmt;
} catch(PDOException $e){
throw new Exception($e->getMessage());
}
}
我想获得产品:
$result->products = $db->query($sql, $arr, 50, 0)->fetchAll();
我的原始查询我想是这样的:
SELECT * FROM products WHERE 1=1 ORDER BY "price" "ASC" LIMIT 50 OFFSET 0
以上查询是错误的。它应该是:
SELECT * FROM products WHERE 1=1 ORDER BY price ASC LIMIT 50 OFFSET 0
我该如何解决这个问题?
'为了通过 情况下:order_dir = 'ASC',那么:ORDER_BY结束ASC, 情况下:order_dir = 'DESC',那么:ORDER_BY结束DESC ...' – lad2025
请说明您的评论 – user889349