2011-08-15 30 views
0

我有這樣的代碼Zend_Db_Table_Abstract :: update()方法可能的錯誤

$db = Zend_Db_Table_Abstract::getDefaultAdapter(); 
$users_table = new Application_Model_UserModel(); 
$result = $users_table->update(array(
    "confirmed" => 1, 
    "key" => null 
), array(
    $db->quoteInto("'type' = ?", Application_Model_UserModel::TYPE_AWATAG), 
    "'confirmed' = 0", 
    $db->quoteInto("'id' = ?", $id), 
    $db->quoteInto("'key' = ?", $key) 
)); 

// no record updated 
if ($result == 0) { 

    throw new Zend_Exception("User not found."); 

} 

拋出異常(即:用戶記錄尚未更新),甚至是所有的地方條件是正確的。

是一個錯誤?你有沒有看到任何錯誤?

解決方案

我這樣不帶引號的所有列名,並添加表參考:

tablename.columnname = newvalue 

感謝收看:)

+0

你能告訴我模型代碼嗎?我覺得你是從控制器那裏做的。你不需要從控制器調用'$ db = Zend_Db_Table_Abstract :: getDefaultAdapter();'。像下面的那樣傳遞它。 –

回答

0

你到底想幹什麼?您的Application_Model_UserModel必須延伸Zend_Db_Table_Abstract

http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.defining

請記住在$_name添加的表名。

的代碼快速啓動現在

class Application_Model_DbTable_Guestbook extends Zend_Db_Table_Abstract 
{ 
    /** Table name */ 
    protected $_name = 'guestbook'; 

    //Now add you method and save from here 
    public function updateGuest($post, $id) 
    { 
     $data = array(
       'updated_on'  => '2007-03-23', 
       'bug_status'  => 'FIXED' 
     ); 

     $where = $this->getAdapter()->quoteInto('bug_id = ?', 1234); 

     $this->update($data, $where); 
    } 
} 

有點當你正在更新通$數據這是一個關聯數組的鍵在表中的字段,以及第二where子句。

這不是zend-framework的錯誤。

+0

感謝您的答案:)我很抱歉,但我不明白錯誤在哪裏:(引用從[手冊](http://framework.zend.com/manual/en/zend.db.table。 html):_ [...]第二個參數可以是一個SQL表達式的數組,表達式使用AND運算符作爲布爾項組合在一起._ –

+0

請顯示'Application_Model_UserModel'代碼。 –