sql >> データベース >  >> RDS >> Mysql

mysqli_connect致命的なエラー:require()

    コードと「解決策」に関する2つの最大の問題:

    1. @があります いたるところにオペレーター。あなたはあなたの質問に-1票を持っています。 @ 演算子です 悪そのもの。表示される空白のページについては、ITが責任を負います。
    2. しかし、あなたが選んだ治療法は事態を悪化させました。この「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);
    

    もちろん、ステートメントの前にエラー抑制演算子(@)を使用しないでください。




    1. PostgreSQLでデータエントリが自動的に削除されるまでの有効期限を設定する方法はありますか?

    2. MySQL挿入ステートメント内でのphp変数の使用

    3. ツリー形式のMYSQL出力またはレベルの追加(親-子)

    4. 3列でグループ化し、日付で並べ替えた古いレコードを削除します