4.11 エラーメッセージを表示する

odbc_exec関数やodbc_fetch_row関数などを実行したとき、その命令文やテーブル・フィールド構造などの影響で、データベース側でエラーが発生する場合があります。たとえば、存在しないテーブル名を指定した、存在しないフィールド名を指定した、主キーの重複でレコード追加できないなど、さまざまなエラーが発生します。

そこで、「odbc_errormsg」関数を使うと、直近の命令文で発生したエラーメッセージを取得することができます。

次の例では、主キーである「社員コード」フィールドに、既存のレコードと同じ値を追加処理することで、意図的にエラーを発生させています。

なお、実際には、odbc_errormsg関数を使わなくても、エラーが発生した命令文の実行時点でPHP固有の形式(エラーの発生したスクリプトの行番号なども表示)でエラーメッセージが表示されます。odbc_errormsg関数を使うと同じようなメッセージが重複して表示されてしまいますので、エラーが発生する可能性がある命令文の方はエラーは表示しないように抑止しておきます。それには関数名の直前に「@」記号を記述します。
※PHPでは専用の関数を使ってエラーメッセージを抑止することも可能です。
<?php

  $DSN        = "AccessPHP";    //データソース名
  $DBUSER     = "";             //ログインユーザー名
  $DBPASSWORD = "";             //パスワード

  //Accessデータベースに接続
  if (! $con = odbc_connect($DSN, $DBUSER, $DBPASSWORD)) {
    exit("Accessデータベースに接続できませんでした!");
  }

  //レコードを追加するSQLを組み立て
  $sql = "INSERT INTO 社員
            (社員コード, フリガナ, 氏名, 在籍支社, 部署名, 誕生日)
            VALUES
            (9999, 'タカハシ イチロウ', '高橋 一朗', '北海道支社',
             '営業部', #1985/08/08#)";
  //SQLを発行
  if (@odbc_exec($con, $sql)) {
    print "レコードの追加に成功しました!";
  }
  else {
    print "レコードの追加に失敗しました!<BR><BR>";
    print "エラー内容は次の通りです。<BR>";
    print "<B>" . odbc_errormsg($con) . "</B>";
  }

  //ODBCとの接続を解除
  odbc_close($con);

?>
1回目の処理ではレコード追加に成功します


同じ処理(同じ社員コードを追加)をもう一度実行するとエラーが発生します

| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved