如何在Zend中更新数据库表记录?

22

我使用 select 语句进行如下查询,它可以成功地获取记录:

$table = new Bugs();
$select = $table->select();
$select->where('bug_status = ?', 'NEW');
$rows = $table->fetchAll($select);

但现在我想更新同一条记录。例如,在简单的MySQL中。

UPDATE TableName Set id='2' WHERE id='1';

如何在Zend中执行上述查询?

谢谢

6个回答

40
$data = array(
   'field1' => 'value1',
   'field2' => 'value2'
);
$where = $table->getAdapter()->quoteInto('id = ?', $id)

$table = new Table();

$table->update($data, $where);

4
你先生因使用$where = $table->getAdapter()->quoteInto('id = ?', $id)的快捷方式获得奖励分数。 - Richard Ayotte

12

既然您已经获取了要更改的行,似乎最简单的方法就是执行:

$row->id = 2;
$row->save();

10

如果您想增加一列,请使用Zend_Db_Expr 例如:

$table->update(array('views' => new Zend_Db_Expr('views + 1')),$where);

4
若要使用多个where语句,请按照以下方式操作。
$data = array(
    "field1" => "value1",
    "field2" => "value2"
);
$where['id = ?'] = $id;
$where['status = ?'] = $status;

$table = new Table();

$table->update($data, $where);

2
public function updateCampaign($id, $name, $value){
    $data = array(
        'name' => $name,
        'value' => $value,
    );
    $this->update($data, 'id = ?', $id );
}

1
   $data = array(
    "field1" => "value1",
    "field2" => "value2"
);

$where = "id = " . $id;

$table = new Table();

$table->update($data, $where);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接