Drupal - 如何识别mysql错误类型并打印自定义错误消息

时间:2011-01-25 11:51:45

标签: php mysql drupal

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

.-------------------------------------------------------------------------.
|  user warning: Duplicate entry 'USD' for key 'currency_code'            | 
|  query: INSERT INTO currency(currency_id, currency_name, currency_code) |
|  VALUES (NULL, 'US Dollar', 'USD') in /xxx/currency/currency.admin.inc  |
|  on line 106.                                                           |
.-------------------------------------------------------------------------.

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

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

首先,您应该通过数字来解释错误,而不是通过解析字符串来解释错误。

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

答案 2 :(得分:1)

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

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