【问题标题】:Joomla 3.0 generic database error handlingJoomla 3.0 通用数据库错误处理
【发布时间】:2013-01-03 01:05:55
【问题描述】:

使用我的扩展从 Joomla 2.5 升级到 3.0,我正在努力解决如何进行数据库错误处理(因为 GetErrorNum 已被弃用,另请参阅 Joomla! JDatabase::getErrorNum() is deprecated, use exception handling instead)。

根据上面链接的问题,似乎要走的路是为每个db->query() 代码添加以下代码:

if (!$db->query()) {
    throw new Exception($db->getErrorMsg());
}

在我看来,这使得数据库错误处理比以前更加尴尬。到目前为止,我只是在 DB 调用之后调用了一个 checkDBError() 函数,该函数会查询 ErrorNum 并相应地处理任何可能的错误。

这与数据库查询的实际触发方式无关 - 有不同的方法可以做到这一点,并且在错误时会产生不同的结果:$db->loadResult() 在错误时返回 null$db->query() 返回 false。所以现在将对不同的数据库访问类型进行不同的检查。

没有任何通用的方法来处理这个,例如一种告诉 Joomla 在数据库问题上抛出异常的方法?还是我必须围绕 DatabaseDriver 编写自己的包装器才能实现这一目标?还是我可能遗漏了一些明显的东西?

或者我应该暂时忽略弃用警告并继续使用 getErrorNum()?我想让我的扩展能够适应未来,但我也不想用笨拙的错误处理逻辑把它弄得过于混乱。

【问题讨论】:

  • @user3145373 其他问题怎么会是重复的?这一篇是关于 Joomla 中的通用数据库错误处理,尤其是。 3.0,而您链接的那个是关于在 Joomla 2.5 中上传文件 - 虽然那里有一些数据库访问权限,但我没有看到 任何 错误处理在那里进行

标签: joomla joomla2.5 joomla3.0


【解决方案1】:

刚刚发现这个讨论:https://groups.google.com/forum/#!msg/joomla-dev-general/O-Hp0L6UGcM/XuWLqu2vhzcJ

正如我所解释的那样,有弃用警告,但无论如何还没有合适的替代品......

除非有人指出任何其他正确的文档说明如何在 3.0 中执行此操作,否则我将继续使用 getErrorNum 方法...

【讨论】:

  • 是的,我会这样做。整个事情有点超前了。
【解决方案2】:

获取 getErrorNum() 函数将解决您的问题....

   $result = $db->loadResult();

    // Check for a database error.
    if ($db->getErrorNum())
    {
        JFactory::getApplication()->enqueueMessage($db->getErrorMsg());

        return false;
    }

【讨论】:

  • getErrorNum() 正是我到目前为止所使用的,正如我在问题中所说的那样......但已被弃用;以及使用什么 而不是 是这里的问题,所以这完全忽略了问题的重点
猜你喜欢
  • 2023-02-17
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 2018-04-18
  • 1970-01-01
相关资源
最近更新 更多