2014-11-05 74 views
0

我試圖用Zend_Db_Adapter更新查詢,但是當我做查詢的回聲時,我想要更新的值仍然是「?」。我入住的是價值$ foo的,我總有1個或0 我的代碼:?而不是zend更新的價值

$this->_db->beginTransaction(); 
try { 
    foreach($a_result as $k => $j){ 
     $foo = ($j['val1'] >= $j['val2']) ? 1 : 0 ; 
     $a_data = array('bar' => $foo); 
     $where['id = ?'] = $k; 
     $update = $this->_db->update($this->_name, $a_data, $where);          
    } 
    $this->_db->commit(); 
} catch (Exception $e) { 
    $this->_db->rollBack(); 
    echo $e->getMessage(); 
} 

我所有的querys看起來是這樣的:

  • UPDATE foo SET bar =? WHERE(id = 39)
  • UPDATE foo SET bar =? WHERE(ID = 40)
  • [...]
+0

檢查它是否將$ foo的值視爲布爾值,可能是您需要將$ foo的值轉換爲 – almaruf 2014-11-05 10:32:34

+0

將其考慮爲$ foo作爲int – Snabow 2014-11-05 10:37:57

回答

0

此代碼對我的作品,儘量把你的循環內,並看看是否有幫助:)

$a_data = array(
      'bar' => $foo 
); 

$_where = array(); 
$_where[] = "id = '" . $k . "'"; 

除此之外,我認爲你的問題存在於$哪裏,這是寫在一個奇怪的方式。我通常使用,對於選擇

->where('ID = ? ', $k) 

在你的情況我會使用

$where = $this->_yourTable->getAdapter()->quoteInto('id = ?', $id) 

不管怎麼說,第一個應該是簡單的!

+0

對於此語法,它效果更好,謝謝。順便說一下,我在上面使用的synthax是Zend 1.x文檔中的一個節目。 – Snabow 2014-11-05 13:29:51

+0

我也使用Zend 1.12,但是,老實說,我從來沒有嘗試過你的語法,因爲這個工作。我不能排除有更好的辦法,但我很高興這有助於你:) – Gounemond 2014-11-05 13:34:53