2010-11-04 36 views
21

Tôi đang sử dụng chọn như thế này và nó đang lấy kỷ lục thành công:Cập nhật bản ghi bảng cơ sở dữ liệu trong Zend như thế nào?

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

Nhưng Bây giờ tôi muốn cập nhật cùng một kỷ lục. Ví dụ trong MySQL đơn giản.

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

Cách thực hiện truy vấn trên trong Zend?

Cảm ơn

Trả lời

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

$table = new Table(); 

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

Nó đang hoạt động. Cảm ơn – Awan

+4

Bạn nhận được điểm thưởng cho phím tắt '$ where = $ table-> getAdapter() -> quoteInto ('id =?', $ Id)'. –

+1

Vâng, chắc chắn rồi. – pltvs

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

$where = "id = " . $id; 

$table = new Table(); 

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

Bạn có mệnh đề where không chính xác. Xem câu trả lời của tôi. – pltvs

11

Vì bạn đã lấy hàng bạn muốn thay đổi, có vẻ như đơn giản nhất để chỉ làm:

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

chỉ trong trường hợp bạn muốn tăng một cột sử dụng Zend_Db_Expr ví dụ:

$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

Đối với nhiều câu lệnh, nơi sử dụng câu lệnh sau.

$data = array(
    "field1" => "value1", 
    "field2" => "value2" 
); 
$where['id = ?'] = $id; 
$where['status = ?'] = $status; 

$table = new Table(); 

$table->update($data, $where); 
Các vấn đề liên quan