2010-11-04 12 views
21

मैं इस तरह का चयन का उपयोग कर रहा है और यह रिकॉर्ड सफलतापूर्वक प्राप्त करने में कठिनाई है:ज़ेंड में डेटाबेस तालिका रिकॉर्ड कैसे अपडेट करें?

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

लेकिन अब मैं एक ही रिकॉर्ड को अपडेट करना चाहते हैं। उदाहरण के लिए सरल MySQL में।

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

ज़ेंड में उपरोक्त क्वेरी को निष्पादित करने के लिए कैसे करें?

धन्यवाद

उत्तर

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

$table = new Table(); 

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

यह काम कर रहा है। धन्यवाद – Awan

+4

आप को $ $ जहां = $ table-> getAdapter() -> quoteInto ('id =?', $ Id) 'शॉर्टकट के लिए बोनस अंक प्राप्त होते हैं। –

+1

हाँ, यकीन है, महोदय। – pltvs

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

$where = "id = " . $id; 

$table = new Table(); 

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

आपके पास गलत है जहां खंड है। मेरा जवाब देखें – 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); 
संबंधित मुद्दे