Mein Fall ist wie folgt aus:Welcher ist besser? Fall wenn oder wenn sonst?
Fall, wenn so:
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;
}
wenn sonst ist wie folgt:
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;
}
ich versucht habe es. Die ganze Art der obigen Arbeit. Aber hier frage ich, welcher ist besser?
Warum Sie eine Bedingung auf einer PHP-Variablen in Ihrem MySQL-Code basiert setzen? Finden Sie heraus, welche Abfrage Sie ausführen möchten, und führen Sie dann die richtige aus. Speichern Sie das nicht in Ihrer Datenbank. – tadman
Auch, bitte, ** NICHT ** Inline willkürliche Werte. Verwenden Sie wann immer möglich [vorbereitete Anweisungen mit Platzhalterwerten] (http://stackoverflow.com/questions/10968527/escaping-sql-queries-in-codeigniter). – tadman
Dies ist eine Funktion seines Codes, ich denke, vergleichen Sie einfach, welche Abfrage wäre besser zu verwenden. eine Kombination lols –