質問: jfactory::getdbo(); $database->setquery $database->execute(); _しかし、$database->geterrornum()が廃止されたためにクエリが何らかの理由で失敗した場合、どのようにエラー/例外をキャッチしますか?
回答: jerrorはj3.xで非推奨になり、php例外、そのため 2つの異なるプログラミング概念が混在 :ロギングとエラー処理(ロギング側は、 jlog )として実装されます。正確な例として、コードをtry/catchブロックでラップしてエラーを取得できます this so answer :_try { ... $db->setquery($query); $result = $db->loadresult(); } catch (exception $e){ echo $e->getmessage(); } _$database->execute()は j2.5では機能しない と記述されていることに注意してください。同等の機能が必要な場合は、$database->query()を使用してください。joomla 2.5と3.xでは jdatabaseオブジェクトメソッド updaterecord()とinsertrecord()は、エラーが発生した場合にキャッチできるエラーもスローします。_try { jfactory::getdbo()->updateobject('#_table_name', $data); } catch (exception $e) { //...handle the exception } _joomla 3.xのみを対象に開発している場合は、 sqlトランザクション でtry catchブロックを使用して、エラーの詳細を取得することもできます。_$db = jfactory::getdbo(); try { $db->transactionstart(); $query = $db->getquery(true); $values = array($db->quote('test_constant'), $db->quote('custom'), $db->quote('/path/to/translation.ini')); $query->insert($db->quotename('#__overrider')); $query->columns($db->quotename(array('constant', 'string', 'file'))); $query->values(implode(',',$values)); $db->setquery($query); $result = $db->execute(); $db->transactioncommit(); } catch (exception $e) { // catch any database errors. $db->transactionrollback(); jerrorpage::render($e); } _