2010-11-04 7 views
21

Я использую выбрать, как это и успешно выборки запись:Как обновить запись таблицы базы данных в Zend?

$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?

Благодаря

ответ

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

$table = new Table(); 

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

Работает. Спасибо – Awan

+4

Вы получаете бонусные баллы для '$ where = $ table-> getAdapter() -> quoteInto ('id =?', $ Id)' shortcut. –

+1

Да, конечно, сэр. – pltvs

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

$where = "id = " . $id; 

$table = new Table(); 

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

У вас неправильное предложение where. См. Мой ответ. – pltvs

11

Поскольку вы уже выборки строку, которую вы хотите изменить, кажется, проще всего сделать:

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

только в случае, если вы хотите увеличить значение столбца использование Zend_Db_Expr например:

$table->update(array('views' => new Zend_Db_Expr('views + 1')),$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; 
$where['status = ?'] = $status; 

$table = new Table(); 

$table->update($data, $where); 
Смежные вопросы