[英]MySQL/PDO: Select different columns depending on parameters
我有一個MySQL查詢,需要根據傳遞給它的參數進行更改。 聽起來很簡單,對吧? 問題是,如果參數為“ 0”,則需要它來獲取所有記錄。
我怎樣才能做到這一點?
到目前為止,這就是我所擁有的。
public function getLatestWork($numberOfSlides, $type = 0) {
$params = array();
$params["numberOfSlides"] = $numberOfSlides;
$params["type"] = $type;
$STH = $this->_db->prepare("SELECT slideID
FROM slides
WHERE visible = 'true'
AND type = :type
ORDER BY order
LIMIT :numberOfSlides;");
$STH->execute($params);
$result = $STH->fetchAll(PDO::FETCH_COLUMN);
return $result;
}
更新 :$ numberOfSlides與問題無關。 它將始終返回一定數量的結果。 全部與$type
:如果將其設置為'0'(默認值),則它實際上會忽略WHERE語句的那部分。 如果將其設置為“ 1”或“ 2”等,則僅提取該類型的記錄。
顯然,我可以根據$ type的值更改$ STH的值,但是我想知道是否有更好的方法。
public function getLatestWork($numberOfSlides, $type = 0) {
$params = array();
$params["numberOfSlides"] = $numberOfSlides;
$params["type"] = $type;
$STH = $this->_db->prepare("SELECT slideIDFROM slides WHERE visible = 'true' "
. ($type > 0 ? "AND type = :type" : "")
. " ORDER BY order LIMIT :numberOfSlides;");
$STH->execute($params);
$result = $STH->fetchAll(PDO::FETCH_COLUMN);
return $result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.