-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