2011-11-15 15 views
0

mysqlエラーとクエリが成功しなかった場合に実行されるクエリを電子メールで送信するデバッグ機能を作成しました。mysql_queryが成功しなかった場合にエラーを表示する

私はこのようにそれを呼び出す:

mysql_query($sql) or $this->debug->dbErrors($sql); 

と機能は次のとおりです。

function dbErrors($sql = ''){ 
    if($this->doDebug) 
     echo mysql_error()."<br/>".$sql; 
    else 
     @mail(hidden_email,$_SERVER['HTTP_HOST'].' Mysql Error','A error occured in '.$_SERVER['HTTP_HOST'].':<br/>'.mysql_error().'<br/>'.$sql); 
} 

問題は、クエリが正常に実行される場合でも、私は電子メールを受信して​​いますということである(少なくともデータがあります挿入され、すべて正常に動作します)

何が間違っていますか?

$result = mysql_query($sql); 

if (!$result) { 
    $this->debug->dbErrors($sql); 
} 

あなたは($結果がブール偽であるかどうかを確認するために、明示的なチェックを行っている。この方法は:構築物は、問題を引き起こしている可能性「や」

おかげ

+0

ます$ this-何ですか> doDebug? –

+0

あなたに送信された電子メールにエラーが発生しましたか? –

+0

@AurelioDeRosa doDebugは、開発やプロダクションの状態によってエラーがどのように表示されるかをモードに設定するための単なるphp varです。これは、画面や電子メールへの印刷メッセージをデバッグします。ありがとうございました – jribeiro

答えて

1

は、私のような何かをするだろうクエリが無効です)、またはリソース(クエリが有効です)。重要な点は、実際に問題がある場合は$this->debug->dbErrors()に電話することです。それ以外の場合はコードが書かれているので、すべてのクエリが電子メールで送信されます。

+0

Anon downvotes ftw! –

+0

こんにちは!!答えをありがとう。私はなぜdownvoteを知りません。とにかく、もしかしたら最初のものが真ならば、2番目の式だけを実行すると思った。条件の1つが真である場合、論理演算子または常に真を返します。最初のものが真であれば、チェックを続ける上でのポイントは何ですか?しかし、PHPが本当にあなたが開発者ではない質問を評価し続けても)私は明日チェックします!お返事ありがとう – jribeiro

0

など単純なもの:

mysql_query($sql) or die(dbErrors($sql)); 
+0

答えLiamに感謝しますが、デバッグ機能のポイント(実際にはクラス内の関数)は重要でない限り死ぬことはありません。とにかく私はそれが私がやっていることとどのように違うのか分かりません。ありがとう – jribeiro

関連する問題