2011-01-25 17 views
1

私はDrupalモジュールを開発しています。通貨という表があります。 currency_code列はUNIQUEに設定されます。私は、重複エントリを入力しようとすると、自動的にDrupalのこのようなエラーメッセージを示しています - もちろん、私は、ユーザーがこのエラーを見てみましょうすることはできませんDrupal - mysqlのエラータイプを特定し、カスタムエラーメッセージを表示する方法

 
.-------------------------------------------------------------------------. 
| 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()を使用しています)。

エラーメッセージの文字列を変数に保存する方法はありますか。バックグラウンドで解析し、メッセージを出力する方法はありますか?

答えて

2

最初に、文字列を解析するのではなく、数値を使ってエラーを解釈する必要があります。この文字列は変更される可能性があります。

第2に、この問題を予期してよりうまく処理する方がよいでしょう。たとえば、問題が無視できる場合は、おそらくINSERT . . . ON DUPLICATE UPDATEが適切でしょう。無視できない場合は、クエリに失敗するのではなく、適切なメッセージを確認して表示するのが適切な方法でしょう。

1

develのdprint_r($ array)関数と、ユーザーフレンドリなエラーメッセージを表示するために提供する他の関数を使用する必要があります。

単に非表示にするには、adminのError_reportingをLOGに設定します。

関連する問題