2012-03-25 12 views
0

「適切な」 phpでSQLデータベースを操作する際にエラーを処理する方法はありますか?PHPでmysqlエラーを処理する適切な方法は何ですか?

何イムは、現在、このようなルックスをしている:)

$connection = new mysqli('hostname', 'user', 'pass', 'database'); 

if ($connection->connect_errno) { 
    reportError("DB_CONNECTION_ERROR", $connection->connect_errno, $connection->connect_error); 
displayError("DB_CONNECTION_ERROR"); 
} 

$stmt = $connection->stmt_init(); 
$q = "query"; 

$stmt->prepare($q); 
$stmt->bind_param('s', $username); 
$stmt->execute(); 

reportErrorと(私が書いたファイルをエラー処理の一部であり、)データベース

displayError(にエラーを記録し、同じの一部であります実際のエラーを表示するのではなく、何を表示するかをページに伝えます。

しかし、ステートメントが正常に作成されたかどうか、またはクエリが成功したかどうかなど、他のエラーをチェックする方法についてはわかりません。すべてのおすすめ感謝!

答えて

2

データベースへの接続エラーをデータベースに書き込むのは非常に奇妙ですか?

私はカスタムdisplayError()関数を持っている点もありません。それは一般的な言い伝えと一緒に対応するヘッダーを送信する一般的な_503()関数である必要があります。

私はカスタムlogError()関数を持っていることに何の意味も見ません。 PHP自体がエラーをログに記録することができます。 trigger_error()が私に最も役立ちます。

イムではない、そのような文が成功し

ああ、この1を調製したかどうかなど、他のエラー、かどうかを確認する方法を確認してください。例外。

+0

データベースに格納されているデータベースの接続エラーは役に立たないが、発生する可能性のある他のエラー(非接続関連)があります。私は例外が何であるかを知っていますし、少なくとも基本的な意味でそれらを使用する方法は、私はちょうど1つが発生しているかどうかを確認する方法を確信していません –

+0

ファイルのログインは確かに最高です。そして、 'catch'演算子は、例外がスローされたかどうかを知らせるものです。 –

+0

何かサンプルコードやそのマニュアルセクションを教えてください。 –

0

何か問題が発生した場合、Mysqliは例外をスローする必要があります。詳細はmysqli_sql_exceptionを参照してください。

クライアントコードで

、あなたはその後のtry/catchブロックでコードをラップすることができます:

try { 

} catch (Exception $e) { 

} 

時には、例えば、try/catchブロック内に解くことができない例外が存在しますデータベースサーバーがダウンしており、データベースに大きく依存しているサイトは、とにかく機能できません。

これらの非常に重大な問題については、例外を上にバブルさせることができます。スクリプトの冒頭でset an exception handlerを実行して、例外をキャッチし、管理者に通知してロギングを行い、500エラーページを表示します。

+0

mysqli_sql_exceptionをチェックして、エラーが発生しているかどうかを確認し、自分のコードの流れを適切に変更します。 –

関連する問題