Zend Framework - 使用WHERE和AND更新数据库行

时间:2010-09-20 23:26:44

标签: php zend-framework

要在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(或引用或其他一些安全的方法...这可能只是意味着我在错误的地方看...但是...... 叹息)。

1 个答案:

答案 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