2011-08-15 8 views
0

私は(すなわち:ユーザレコードが更新されていない)例外をスローするこのコード取得Zend_Db_Table_Abstract ::更新()の可能なバグ

$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_UserModelZend_Db_Table_Abstractにする必要があります。

$_nameにテーブル名を追加することを忘れないでくださいhttp://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.defining

を参照してください。

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); 
    } 
} 

今すぐクイックスタートからのコードのビットは、テーブル内のフィールドのようにキーを持つ連想配列であるパス$データ、および第二節を更新しているとき。

これはzend-frameworkのバグではありません。

+0

答えをありがとう:)私は申し訳ありませんが、私はどこでエラーが理解できません:([マニュアル](http://framework.zend.com/manual/en/zend.db.tableから引用)。 html):_ [...] 2番目の引数はSQL式の配列です。式はAND演算子を使用してブール条件として結合されます。 –

+0

'Application_Model_UserModel'コードを表示してください。 –

関連する問題