2010-11-04 9 views
21

estoy usando seleccione como este y que es ir a buscar graba bien:¿Cómo se actualiza un registro de tabla de base de datos en Zend?

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

pero ahora quiero actualizar mismo registro. Por ejemplo en MySQL simple.

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

¿Cómo realizar la consulta anterior en Zend?

Gracias

Respuesta

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

$table = new Table(); 

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

Está funcionando. Gracias – Awan

+4

Usted señor recibe marcas de bonificación para el atajo '$ where = $ table-> getAdapter() -> quoteInto ('id =?', $ Id)'. –

+1

Sí, claro, señor. – pltvs

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

$where = "id = " . $id; 

$table = new Table(); 

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

Tienes incorrecta cláusula where. Ver mi respuesta – pltvs

11

Puesto que ya estás recuperación de la fila que desea cambiar, parece más sencilla de hacer simplemente:

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

si acaso ¿Quieres incrementar una columna use Zend_Db_Expr por ejemplo:

$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

Para más de una instrucción donde utilice lo siguiente.

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

$table = new Table(); 

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