PHPエラーを非表示にするためにerror_reporting(0)コードを使用しますが、これは常に機能しますが、mysqlからは役に立たないエラーがいくつかあります。無効なSQL、1064エラーなどのmysqlエラーを非表示にするためのmysqlのコードはありますか。
5 に答える
ここにアイデアがあります:しないでください。
今すぐ PHP エラー報告をオンに戻し、それらのエラーを敷物の下に一掃するのではなく、修正します。
個人的に、私は使用するのが好きerror_reporting(E_ALL ^ E_NOTICE)
です。完璧ではありませんが、私は通知を無視しています。
MySQL エラーを無視することは、大失敗です。...まあ、サーバーが死んで何百万もの顧客があなたに腹を立てたくない限り。
$result = @mysql_operation();
$errno = mysql_errno();
if ($errno > 0)
{
handle_error();
}
関数呼び出しの@
前に、生成されたエラーを抑制する必要があります。
エラー制御演算子です。私はこれを非常に軽く使用し、最初にエラー/警告を生成しているコードを修正しようとします.
私が を使用するの@
は、非推奨のコードを含むサード パーティのライブラリを使用するときだけです。あまりにも多く使用すると、実際の問題 (おそらくあなたが抱えている問題など) がポップアップしたときにマスクされ、デバッグが非常に困難になる可能性があります。
警告
php.netから
- 現在、"@" エラー制御演算子プレフィックスは、スクリプトの実行を終了させる重大なエラーのエラー レポートを無効にします。
- とりわけ、これは、「@」を使用して特定の関数からのエラーを抑制し、それが利用できないか、タイプミスされている場合、スクリプトは理由を示さずにその場で停止することを意味します。
php.netから
より良い方法:
独自のアイデアをカスタマイズします。Error-Lines または Error-Numbers 間のエラーのみ
<?php
function exception_error_handler($errno, $errstr, $errfile, $errline )
{
if (error_reporting() === 0)
{
return;
}
//example turn error OFF, between line 100 and 200
if ($errline<100 || $errline>200) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
} else return;
}
set_error_handler("exception_error_handler");
function catchException($e)
{
// Do some stuff
}
set_exception_handler('catchException');
?>
まだ例外がスローされているのを見たことがないことに驚いています。
Try/catch は、実行時エラーと例外をカスタマイズし、コードを停止するのではなく実行を継続できるようにするための非常に効果的な方法です。
class MySQLConnectException extends Exception{
public function __construct( $message ){
parent::__construct( $message );
}
}
try{
$mysql = new mysqli();
If( !$mysql )
Throw new MySQLConnectException('Failed to connect');
}
catch( MySQLConnectException $e ){
echo $e-> getMessage();
}