【问题标题】:Drupal - How to identify mysql error type and print custom error messageDrupal - 如何识别 mysql 错误类型并打印自定义错误消息
【发布时间】:2023-03-26 14:53:01
【问题描述】:

我正在开发一个 Drupal 模块。有一张表叫做货币。 currency_code 列设置为 UNIQUE。当我尝试输入重复条目时,drupal 会自动显示如下错误消息:-

.------------------------------------------------ ------------------------------------。 |用户警告:键“currency_code”的重复条目“USD”| |查询:INSERT INTO currency(currency_id, currency_name, currency_code) | | /xxx/currency/currency.admin.inc 中的值 (NULL, 'US Dollar', 'USD') | |在第 106 行。 .------------------------------------------------ ------------------------------------。

显然我不能让用户看到这个错误。相反,我想打印一条自定义错误消息,指示错误原因(在这种情况下重复唯一值)。所以我的问题是如何识别导致错误的原因并以用户友好的方式显示它(可能使用 drupal_set_message())。

有什么方法可以将错误消息字符串保存在变量中,以便在后台解析它并打印自定义消息?

【问题讨论】:

    标签: php mysql drupal


    【解决方案1】:

    Drupal 的数据库抽象层有一个名为db_error 的函数,它包装mysql_errno 并返回最后一个查询的MySQL error number。

    【讨论】:

      【解决方案2】:

      首先,您应该通过错误的编号来解释错误,而不是通过解析字符串,这可能会发生变化。

      其次,更好的做法是预测这个问题并更好地处理它。例如,如果问题是可以忽略的,也许INSERT . . . ON DUPLICATE UPDATE 会更合适。如果它不可忽略,也许适当的方法是检查并显示适当的消息,而不是依赖查询失败。

      【讨论】:

        【解决方案3】:

        您应该使用 devel 的 dprint_r($array) 函数以及它提供的其他函数来显示用户友好的错误消息。

        如果你只是想隐藏它,请将 admin 中的 Error_reporting 设置为 LOG。

        【讨论】:

          猜你喜欢
          • 2018-08-08
          • 2016-12-03
          • 1970-01-01
          • 2018-08-19
          • 1970-01-01
          • 2021-10-06
          • 2023-02-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多