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 在 Joomla 2.5 中不被弃用 - 但在 Joomla 3.0(平台 12.1 及更高版本)中,所以对于 Joomla 2.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');
}

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

于 2015-04-17T05:17:57.463 回答