データベースMySQL関数(エラー処理)
- mysql_error〔直近のMySQL処理からエラーメッセージを返す〕
- mysql_errno〔直近のMySQL処理からエラーメッセージのエラー番号を返す〕
- エラーが発生したらエラー内容をメール送信
mysql_error
直近のMySQL処理からエラーメッセージを返す
unknown
string mysql_error ( resource 接続ID ] )
直近の処理からエラーメッセージのエラー番号とメッセージを返します。 エラーが発生していない場合は0を返します。
直近に実行されたMySQL関数のエラーコードのみを返すため、他のMySQL関数をコールする前に値をチェックします。
PHPのMySQL関数はエラーが発生すると、自動的にエラーメッセージをブラウザに出力します。 このエラーメッセージを非表示にするには、関数の頭にエラー演算子(@)を付けて使用します。
<?
/* MySQL接続開始 */
$dbc=mysql_connect("localhost", "root", "");
/* データベース(db_sample)選択 */
if(!mysql_select_db("db_sample", $dbc)){
/* 失敗した場合は、エラー番号&エラーメッセージ表示 */
echo mysql_errno($dbc).": ".mysql_error($dbc)."<br>\n";
}
/* クエリ送信 */
if(!mysql_query("SELECT * FROM tbl_sample", $dbc)){
/* クエリに失敗した場合は、エラー番号&エラーメッセージ表示 */
echo mysql_errno($dbc).": ".mysql_error($dbc)."<br>\n";
}
/* エラー出力例
1049: Unknown database 'db_sample'
1046: No Database Selected
*/
?>
mysql_errno
直近のMySQL処理からエラーメッセージのエラー番号を返す
unknown
int mysql_errno ( [ resource 接続ID ] )
直近のMySQL関数で発生したエラー番号を返します。エラーが発生していない場合は0を返します。 データベースバックエンドから返されるエラーは警告を発しないため、この関数を使ってエラー番号を取得します。
オプションの第1引数接続IDが指定されていない場合は、mysql_connect()関数により直近に開かれた接続が使用されます。 接続が確立されていない場合は、引数を指定せずmysql_connect()関数がコールされた時と同様に接続を確立します。 それでも接続が確立できない場合は、E_WARNINGレベルのエラーが発生します。
<?
/* MySQL接続開始 */
$dbc=mysql_connect("localhost", "root", "");
/* データベース(db_sample)選択 */
if(!mysql_select_db("db_sample", $dbc)){
/* 失敗した場合は、エラー番号&エラーメッセージ表示 */
echo mysql_errno($dbc).": ".mysql_error($dbc)."<br>\n";
}
/* クエリ送信 */
if(!mysql_query("SELECT * FROM tbl_sample", $dbc)){
/* クエリに失敗した場合は、エラー番号&エラーメッセージ表示 */
echo mysql_errno($dbc).": ".mysql_error($dbc)."<br>\n";
}
/* エラー出力例
1049: Unknown database 'db_sample'
1046: No Database Selected
*/
?>
エラーが発生したらエラー内容をメール送信
unknown
<?
/* MySQL接続開始 */
$dbc=mysql_connect("localhost", "root", "");
/* データベース選択 */
$db_select=mysql_select_db("db_customer", $dbc);
/* クエリ送信 */
$sql="SELECT * FROM tbl_customers";
$res=mysql_query($sql, $dbc);
/* クエリに失敗した場合は、エラー内容をメール送信 */
if(!$res){
//送信先
$to="hogehoge@yahoo.co.jp";
//件名
$subject="【Database Error】";
//本文
$body.="TIME: ".date("Y-m-d H:i:s")."\n";
$body.="SQL: ".$sql."\n";
$body.="Error Message:".mysql_errno().": ".mysql_error()."\n";
mail($to,$subject,$body,"") or die("メール送信失敗<br>\n");
exit;
}
?>