2010-11-04 4 views
21

Ich verwende wählen wie diese und es wird Datensatz erfolgreich zu holen:Wie aktualisiert man einen Datenbanktabellen-Datensatz in Zend?

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

aber jetzt möchte ich denselben Datensatz aktualisieren. Zum Beispiel in einfachem MySQL.

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

Wie obige Abfrage in Zend ausführen?

Dank

Antwort

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

$table = new Table(); 

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

Es funktioniert. Danke – Awan

+4

Sie erhalten Bonus-Markierungen für die '$ where = $ table-> getAdapter() -> quoteInto (' id =? ', $ Id) 'Verknüpfung. –

+1

Ja, sicher, Sir. – pltvs

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

$where = "id = " . $id; 

$table = new Table(); 

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

Sie haben eine falsche WHERE-Klausel. Siehe meine Antwort. – pltvs

11

Da Sie bereits die Zeile, die Sie ändern möchten holen, scheint es am einfachsten, einfach tun:

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

für alle Fälle wollen Sie eine Spalte erhöhen Verwenden Sie Zend_Db_Expr zB

$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

Verwenden Sie für mehr als eine where-Anweisung Folgendes.

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

$table = new Table(); 

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