的Joomla! JDatabase :: getErrorNum()已过时,使用异常处理,而不

2019-08-04 09:38发布

我有以下代码:

    $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系列的价值。

因此, 与什么来取代他们 ,这样我可以正确检查数据库错误?

Answer 1:

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

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

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

希望能帮助到你



Answer 2:

JError是不是在的Joomla 2.5过时 - 但在的Joomla 3.0(平台12.1起),以便为Joomla 2.5,这是不是一个问题。 JError正在与PHP的异常代替(链接到PHP指南这里 )

还有这个一个Joomla论坛的问题在这里

使用异常也是getErrorNum()的情况下 - 再次阅读上面的PHP文件的链接获取更多信息。 有在页面上一个不错的mysql例子在这里 。



Answer 3:

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

并重定向到您的网址。 将被显示的错误信息



文章来源: Joomla! JDatabase::getErrorNum() is deprecated, use exception handling instead