「編集」ページを備えたカスタム Drupal 7 モジュールがあります。
フォーム フィールドはいくつかのデータベース テーブルを参照するため、フォームを処理するために最初のテーブルを更新しようとし、次のテーブルを更新する前に「$error」を「true」に設定して $error をチェックします。テーブル。例えば:
HTML:
<input name="field1" />
<input name="field2" />
PHP:
$error = false;
$update_table_1 = db_update('table1')
->fields(array(
'field1' => $_POST['field1'],
))
->condition('id', $id)
->execute();
if(!update_table_1) {
$error = true;
}
if(!$error) {
$update_table_2 = db_update('table2')
->fields(array(
'field2' => $_POST['field2'],
))
->condition('id', $id)
->execute();
if(!$update_table_2) {
$error = true;
}
}
問題:テーブル 2 の何かを更新するだけの場合、イベントがテーブル 2 を更新する前にエラーがスローされます。これは、フィールドがデータベース内のものと同じ (変更なし) であるため、db_query が true ではないことを示しているためです。本当に、データベース/コードエラーがあった場合にのみ停止したい.
Drupal 7 db_update API には、mysql_error() のような何らかのエラー報告機能がありますか? 他の提案?