我的情況是這樣的:當是這樣哪一個更好?何時或如果其他?
情況:
public function get_opportunity($customer_id, $group_id, $action)
{
$sql = "SELECT COUNT(transaction_id) AS total_transaction
FROM `transaction`
WHERE
CASE
WHEN '$action' = 'view_all' THEN transaction_id IS NOT NULL
WHEN '$action' = 'view_group' THEN group_id IN($group_id)
ELSE transaction_created_by = ?
END
";
$result = $this->db->query($sql, array($customer_id))->result_array();
return ($result[0]['total_transaction']) ? $result[0]['total_transaction'] : 0;
}
如果別人是這樣的:
public function get_opportunity($customer_id, $group_id, $action)
{
if($action == "view_all")
$condition = " transaction_id IS NOT NULL";
else if($action == 'view_group')
$condition = " group_id IN($group_id)";
else
$condition = " customer_id = ?";
$sql = "SELECT COUNT(transaction_id) AS total_transaction
FROM `transaction`
WHERE $condition";
$result = $this->db->query($sql, array($customer_id))->result_array();
return ($result[0]['total_transaction']) ? $result[0]['total_transaction'] : 0;
}
我已經嘗試過了。上述所有類型的工作。但在這裏我問,哪一個更好?
你爲什麼把基於你的MySQL代碼中一個PHP變量的條件?找出想要執行的查詢,然後運行正確的查詢。不要將其轉儲到數據庫中。 – tadman
另外,請,**不要**內聯任意值。儘可能使用[帶有佔位符值的預處理語句](http://stackoverflow.com/questions/10968527/escaping-sql-queries-in-codeigniter)。 – tadman
這是他的代碼功能,我猜...只是比較哪個查詢會更好用。一個組合lols –