0
試圖寫在Zend框架1以下查詢:ZF - MySQL的SUM查詢使用CASE WHEN
SELECT
SUM(CASE WHEN column2 = 'value1' THEN column3 END) AS 'mySpecialSum',
FROM `my_table`
WHERE column4='value2' AND column5='value3'
來測試我寫這樣的:
$select = $this->select()
->from('my_table', array(
'mySpecialSum'=>'SUM(CASE WHEN column2 = "value1" THEN column3 END)'
))
->where('column4=?', $value2)
->where('column5=?', $value3);
$data = $this->fetchAll($select);
其中工程 - 但我需要知道如何將value1
作爲變量 - 例如$value1
- 最好帶有佔位符,以便語句「準備好」 - 以儘量減少SQL注入的機會。
目前正在兩個選項(即不工作):
$select = $this->select()
->from('my_table', array(
'mySpecialSum'=>'SUM(CASE WHEN column2 = "{$value1}" THEN column3 END)'
))
->where('column4=?', $value2)
->where('column5=?', $value3);
$data = $this->fetchAll($select);
OR
$select = $this->select()
->from('my_table', array(
'mySpecialSum'=>'SUM(CASE WHEN column2 = "{$this->_db->quote($value1)}" THEN column3 END)'
))
->where('column4=?', $value2)
->where('column5=?', $value3);
$data = $this->fetchAll($select);