要在Zend Framework中的MySQL表行更新中使用where
,我有类似的内容:
public function updateBySiteId(array $data, $id) {
$table = $this->gettable();
$where = $table->getAdapter()->quoteInto('site_id = ?', $id);
return $table->update($data, $where);
}
这个,我希望,给我一些像......
UPDATE foo SET ponies = 'sparkly' WHERE site_id = '1'
但是,如果我想创建以下内容:
UPDATE foo SET ponies = 'sparkly' WHERE site_id = '1' AND type = 'zombie'
在手册中,我没有看到如何使用quoteInto(或引用或其他一些安全的方法...这可能只是意味着我在错误的地方看...但是...... 叹息)。
答案 0 :(得分:9)
自表update()方法 代理到数据库适配器 update()方法,第二个参数 可以是SQL表达式的数组。 表达式组合为 使用AND运算符的布尔项。
http://framework.zend.com/manual/en/zend.db.table.html
$data = array(
'updated_on' => '2007-03-23',
'bug_status' => 'FIXED'
);
$where[] = "reported_by = 'goofy'";
$where[] = "bug_status = 'OPEN'";
$n = $db->update('bugs', $data, $where);
结果SQL是:
UPDATE "bugs" SET "update_on" = '2007-03-23', "bug_status" = 'FIXED' WHERE ("reported_by" = 'goofy') AND ("bug_status" = 'OPEN')
http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.write.update