我想用OR子句做一個Zend數據庫更新。什麼是等效的聲明:Zend DB更新中的OR子句?
UPDATE mail
SET message_read = 1
WHERE id = 5
OR id = 10
我想用OR子句做一個Zend數據庫更新。什麼是等效的聲明:Zend DB更新中的OR子句?
UPDATE mail
SET message_read = 1
WHERE id = 5
OR id = 10
當調用Zend_Db_Adapter::update()
,多WHERE
條件將自動使用AND
(在功能_whereExpr線的Zend/DB /適配器/ Abstract.php的698)相結合。
你可以通過創建自己的Zend_Db_Expr
來解決這個問題,你將使用它作爲WHERE
條件,它將保持不變。
例如:
$where[] = new Zend_Db_Expr(
$table->getAdapter()->quoteInto('id = ?', 5) . ' OR ' .
$table->getAdapter()->quoteInto('id = ?', 10)
);
// resulting expression:
// WHERE (id = 5 OR id = 10)
$table->update($data, $where);
如果你有額外的WHERE
條件,他們將與OR
條件由AND
結合。
實施例:
$where[] = new Zend_Db_Expr(
$table->getAdapter()->quoteInto('id = ?', 5) . ' OR ' .
$table->getAdapter()->quoteInto('id = ?', 10)
);
$where[] = $table->getAdapter()->quoteInto('type = ?', 'sometype');
// resulting expression:
// WHERE (id = 5 OR id = 10) AND (type = 'sometype')
太好了,謝謝! – joeschmidt45
- >其中()將添加一個where子句到查詢和將投入的 'AND'。有一個orWhere方法可以做到這一點。
$select = $this->select();
$select->where('id = 5');
$select->orWhere('id = 10');
$this->fetchAll($select);
的可能重複[如何使用多個條件在UPDATE語句Zend_Db的和QuoteInto(http://stackoverflow.com/questions/6321504/how-to-use-multiple-conditions-in-an -update-statement-with-zend-db-and-quoteinto) – cmbuckley
@cbuckley這將結合WHERE使用'AND'這不是OP想要的。 – drew010