9

私は次のコードを持っています:

    $db = JFactory::getDbo();
    $query = $db->getQuery(true);

    $query->select('*');
    $query->from('#__users');
    $db->setQuery($query);

    // Check for a database error.
    if ($db->getErrorNum()) {
        JError::raiseWarning(500, $db->getErrorMsg());
    }       

    $result = $db->loadResult();

現在、getErrorNumとJErrorは非推奨になっています。

明確にするために、JErrorと$ db-> getErrorNum()はJoomla 2.5では非推奨ではありませんが、Joomla!にあります。3.0。したがって、この質問は、2.5用に開発しているが、3.Xシリーズに簡単にアップグレードしたい人にとって価値があります。

では、データベースエラーを適切にチェックできるように、それらを正確に置き換えるにはどうすればよいでしょうか。

4

3 に答える 3

10
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select('*')
      ->from('#__users');

try
{
    $db->setQuery($query);
    $result = $db->loadResult();
}
catch (RuntimeException $e)
{
    echo $e->getMessage();
}

それが役に立てば幸い

于 2013-03-11T16:49:06.557 に答える
7

JErrorはJoomla2.5では非推奨ではありませんが、Joomla 3.0(プラットフォーム12.1以降)では廃止されていないため、Joomla2.5ではこれは問題になりません。JErrorはphp例外に置き換えられています(ここにあるphpガイドへのリンク)

これについてのJoomlaフォーラムの質問もここにあります

getErrorNum()の場合も例外を使用します。詳細については、上記のphpドキュメントのリンクを再度お読みください。ここのページに素晴らしいmysqlの例があります。

于 2012-12-20T16:34:15.780 に答える
1
$app = JFactory::getApplication();

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select('*')
  ->from('#__tablename');

try
{
    $db->setQuery($query);
    $result = $db->loadObjectList();
}
catch (Exception $e)
{
    $app->enqueueMessage(JText::_($e->getMessage()), 'error');
}

URLにリダイレクトします。エラーメッセージが表示されます

于 2015-04-17T05:17:57.463 に答える