【问题标题】:CodeIgniter database error overridingCodeIgniter 数据库错误覆盖
【发布时间】:2012-01-18 02:34:34
【问题描述】:

我浏览了 SO 上的众多帖子,并在 Google 上搜索到了这个问题,但我发现的所有内容都没有提到任何与我的确切问题相关的内容。所以,请原谅这个问题看似多余的性质。

我有一个模型,当它尝试向表中插入记录并且插入违反了我在某些字段上的唯一值索引时,CI 会抛出它自己的关于该错误的错误消息。

我想知道是否有办法用我自己的处理程序覆盖 CodeIgniter 在数据库错误上显示的错误,这样我就可以简单地向用户表明他们提交的内容,而不是完全被错误破坏的用户体验是数据库中已有内容的副本。

现在,我知道我可以通过对数据库运行一个选择并以这种方式处理它来做到这一点,但这似乎完全违背了数据库自身能够处理具有唯一索引的此类事情的能力。

那么,有没有人找到一种方法来挂钩 CI 中的数据库错误处理并用他们自己的实现覆盖它?

【问题讨论】:

    标签: mysql database codeigniter error-handling


    【解决方案1】:

    在提交查询之前检查现有值,这并不违反直觉。您应该绝不依赖数据库来验证用户/您的输入。使用 PHP。

    【讨论】:

    • 我想如果这是我唯一的选择,那就这样吧。谢谢,迈克。
    • 嗯,你问的是可能的,但这将是一个非常糟糕的做法。只要确保您有适当优化的表和索引 - 您应该不会注意到任何明显的性能下降。
    【解决方案2】:

    有一个文件/application/errors/error_db.php

    此文件显示错误消息。你可能想在这里做点什么。

    【讨论】:

    • 我也会看看那个。谢谢。
    【解决方案3】:

    我不确定 CI 错误处理是如何工作的,但请尝试覆盖显示错误的方法。我很确定它位于 system/core/exceptions.php

    【讨论】:

    • 您好 JanL,感谢您的回复。我会看看。目前,我正在查看 system/database/DB_driver.php 文件的源代码,该文件似乎是查询函数的所在地。我希望看看它是如何拦截错误的。也许我可以编写一个助手,然后可以取代核心处理。我不能让我的用户因为错误消息而不是更直观的处理方法而放弃。
    猜你喜欢
    • 2014-02-28
    • 2013-09-07
    • 2016-05-04
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 2016-07-12
    • 2014-05-05
    相关资源
    最近更新 更多