2012-03-03 5 views
0

モデルを使用して行を更新すると、データ配列は行データとまったく同じになります。更新関数はfalseを返します。 例:返り値 '0'または 'false'がエラーまたは更新時に同じデータである場合、どのようにknwoするのですか?

$データ=配列(

の 'name' => 'ホルヘ'、

'最後の' => 'フェラーリ

)。

$ tabelaTest = new Application_Model_Test();

echo $ tabelaTest-> update($ data、 'id = 0');

NAME LAST

Jorgeのフェラーリ

これは '0' 出力します:DBは、このような行が持っていると仮定すると

。この例外をどのように処理するかのアイデアはありますか? 私は十分に明確ではなかった場合は、申し訳ありませんが下手な英語のユーザー、テーブル内のデータが更新中のデータと同一である場合(

答えて

4

あなたの例では、その後、Zend_Db_Tableあなたはレコードがなかったことを知らせる(int)0を返します。あなたが更新さidが存在することが確実な場合に更新。

、あなたはデータが同じであったと仮定することができますし、更新するものは何もありませんでした。

Zend_Db_Tableはあなたが非を参照するクエリを構築することができなかった場合存在する列、またはデータベースへの接続ができない場合は、update() throw実際のエラーの内容に基づいてZend_Exceptionになります。

​​呼び出しがPDO、Mysqli、Oracleなどのクエリを実行できない場合、update()は代わりに(bool)falseを返します。

例:

$data = array('name' => 'Jorge', 
       'last' => 'Ferrari'); 

$table = new Application_Model_Test(); 

try { 
    $result = $table->update($data, 
          $table->getAdapter->quoteInto('id = ?', 0); 

    // Use === to compare type AND value 
    if (false === $result) { 
     return false; // bool false returned, query failed 
    } else { 
     if ($result === 0) { 
      // no rows updated 
     } else { 
      // 1 or more updated 
     } 
     return $result; 
    } 
} catch (Zend_Exception $zex) { 
    // exception occurred. Could not connect, bad parameters or SQL etc 
    throw $zex; 
    // or 
    return false; // if you return false here and above, then you don't 
        // know if an exception occurred, or if the query failed 
} 

お役に立てば幸いです。

+0

注:見つからない!つまり、行ID = 0が存在しないと仮定すると、 'update()'は0を返します。 –