我正在开发一个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消息?
答案 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。