2012-12-29 64 views
4

這裏是我的代碼Zend的更新語句,不更新數據庫行

$id = $this->user->id; 
$data['last_cust_code']  = $a_Search['custcode']; 
$data['last_paid_filter'] = $a_Search['paid']; 
$data['last_unpd_filter'] = $a_Search['unpaid']; 
$data['last_group_field'] = $a_Search['grouping']; 
$data['last_session_code'] = $a_Search['session']; 
$out = $objDb->update('tblusrusers', $data,array("id = ?"=>$id)); 

探查輸出

UPDATE `tblusrusers` SET `last_cust_code` = ?, `last_paid_filter` = ?, `last_unpd_filter` = ?, `last_group_field` = ?, `last_session_code` = ? WHERE (id = '70') 

Array 
(
    [1] => TESTAAA 
    [2] => N 
    [3] => N 
    [4] => 1 
    [5] => 19993E 
) 

,當我直接通過mysql客戶端更新其正確地更新。

重要提示:當我通過查詢選擇輸出時,我能夠看到更新,但沒有通過phpmyadmin.does進行,它與提交語句有關,我的意思是我的自動提交是錯誤的?我使用的交易將它影響我上面更新查詢?請幫

+0

如何在數據庫中配置事務?你嘗試$ objDb-> commit();完成查詢後? – Electronick

+0

一切看起來正確。你如何連接到你的數據庫?你使用哪個適配器?您的$ data數組屬性與您的數據庫列名完全匹配嗎?你有什麼錯誤嗎? – RockyFord

+0

@Electronick我在數據庫中啓用了自動提交功能。 –

回答

1

其實這個問題是有人在我的製作團隊只是把一個$objDb->beginTransaction() 但沒有提交使用$objDb->commit()導致mysq l數據庫自動提交爲false(bcoz開始的事務語句將autocommit設置爲false),因此所有其他查詢因爲沒有發生commit而不工作。

0

我從來沒有使用Zend的,但我認爲你的數據陣列應儘可能

$data = array('last_cust_code' => $a_Search['custcode'], 
      'last_paid_filter' => $a_Search['paid'], 
      'last_unpd_filter' => $a_Search['unpaid'], 
      'last_group_field' => $a_Search['grouping'], 
      'last_session_code' => $a_Search['session']); 
+0

查詢生成正確ü可以檢查探查器o/p,我已經顯示。但它有一些與數據庫配置有關的事情我認爲 –