我想用OR子句进行Zend db更新。什么是等同的陈述:
UPDATE mail
SET message_read = 1
WHERE id = 5
OR id = 10
答案 0 :(得分:8)
调用Zend_Db_Adapter::update()
时,将使用WHERE
(函数_whereExpr中Zend / Db / Adapter / Abstract.php的第698行)自动合并多个AND
条件。
您可以通过创建自己的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')
条件合并。
示例:
{{1}}
答案 1 :(得分:2)
- > where()将在查询中添加where子句,并将放置一个“AND”。有一种orWhere方法可以做到这一点。
$select = $this->select();
$select->where('id = 5');
$select->orWhere('id = 10');
$this->fetchAll($select);