コードと「解決策」に関する2つの最大の問題:
-
@
があります いたるところにオペレーター。あなたはあなたの質問に-1票を持っています。@
演算子はです 悪そのもの。表示される空白のページについては、ITが責任を負います。 - しかし、あなたが選んだ治療法は事態を悪化させました。この「ORダイ」は、エラー報告の問題を解決するための魔法の詠唱ではありません。また、不適切に使用すると、エラーが発生します あなたが持っているもののように。
1
をお持ちの方 エラーメッセージで。
まず、インクルードは大丈夫なので、そのままにしておきます。
mysqliからエラーが発生する間は、次の手順に従ってください。
「または死ぬ」をランダムに追加する代わりに、より堅牢で役立つエラー報告ソリューションが必要です。
ヘルパークラスにカプセル化せずにアプリケーションコード全体でmysqli_query()を使用している場合は、trigger_error()
エラーが発生したファイルと行番号も表示されるため、PHPエラーを発生させるのに適した方法です。
$res = mysqli_query($mysqli,$query) or trigger_error(mysqli_error($mysqli)."[$query]");
すべてのスクリプトで
それ以降、オブジェクトが作成されなかった理由が通知されます(このor
に興味がある場合は、 構文、ここで説明しました
-(1)
がある理由も説明します エラーメッセージ内)
ただし 、クエリをクラスにカプセル化する場合、トリガーエラーからのファイルと行は、特定の問題を引き起こしたアプリケーションコードではなく、呼び出し自体を指すため、まったく役に立ちません。したがって、カプセル化されたmysqliコマンドを実行するときは、別の方法を使用する必要があります。
$result = $mysqli->query($sql);
if (!$result) {
throw new Exception($mysqli->error." [$query]");
}
例外としてスタックトレースが提供されます 、これにより、誤ったクエリが呼び出された場所が表示されます。
一般的にPHPエラーを確認できる必要があることに注意してください。ライブサイトではエラーログを確認する必要があるため、設定を行う必要があります
error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);
ローカル開発サーバーでは、画面にエラーが発生しても問題ありません:
error_reporting(E_ALL);
ini_set('display_errors',1);
もちろん、ステートメントの前にエラー抑制演算子(@)を使用しないでください。