ホームページ  >  に質問  >  本文

mysqli_connect() エラーを手動で確認する必要がありますか?

mysqli_connect() の PHP マニュアルでは、戻り値を確認し、画面にエラー メッセージを表示することを推奨しています。

リーリー

同様に、OOP スタイルのコンストラクターの場合、これをお勧めします:

リーリー

Stack Overflow の一部のユーザーは、次のような mysqli_error($conn) を含むコードさえ使用しています。 リーリー

しかし、ここ数週間、私は自問自答してきました。なぜこれを行う必要があるのでしょうか?最初の例の出力は次のとおりです:

警告: mysqli_connect(): (HY000/1045): ユーザー アクセスが拒否されました 'my_user'@'localhost' (パスワードを使用: YES) C:xampp...mysqli.php 行 4

エラー: MySQL に接続できません。デバッグ エラー番号: 1045 デバッグ エラー: ユーザー "my_user"@"localhost" のアクセスが拒否されました (パスワードを使用: はい)###

ご覧のとおり、エラー メッセージが 2 回表示されます。手動の「デバッグ」では実際に得られる情報は少なくなります。

接続エラーを手動で確認する必要がありますか?この方法で、自動警告よりも多くの情報を取得できますか?これは推奨される方法ですか?

P粉031492081P粉031492081381日前722

全員に返信(1)返信します

  • P粉251903163

    P粉2519031632023-10-28 00:52:28

    接続エラーを手動で表示しないでください。

    MySQLi は、MySQL への接続を開けない場合に警告を生成します。この警告は、エラー コード、エラー メッセージ、コード内のエラーが発生した場所など、知る必要があるすべてを示します。手動でエラーをチェックしても、それ以上の情報は得られません。

    警告が表示されず接続を作成できない場合は、おそらく、PHP が警告を表示するように構成されていないことを意味します。この場合、サーバー上のエラー ログ ファイルを確認する必要があります。場所がわからない場合は、phpinfo() を使用して情報を取得し、error_log を検索してください。エラー ログ ファイルの場所がわかります。

    エラー ログに警告がない場合は、おそらく PHP エラー報告が (完全に、または警告だけで) 停止されていることを意味します。 PHP の設定を確認してください。
    本番環境では、次の設定を保持する必要があります:

    • error_reportingE_ALL
    • である必要があります
    • log_errors 有効にする必要があります
    • display_errors MustClose

    開発環境では、次の設定を保持する必要があります:

    • error_reportingE_ALL である必要があります
    • log_errors 有効にする必要があります
    • display_errors 有効にする必要があります
    エラー メッセージからわかるように、データベースのユーザー名とパスワードがエンド ユーザーに漏洩しました。これは誰にも見せたくない機密情報です。実際、一般のユーザーにはこの謎のメッセージが理解できません。このため、運用環境では

    display_errors を常にオフにする必要があります。エラーをサーバーに記録しても安全です。

    警告と例外

    警告によってスクリプトは停止されません。警告が発行された場合、スクリプトは致命的なエラーが発生するまで実行を続けます。ほとんどの場合、スクリプトを停止するには例外をスローする必要があります。

    die/exit は使用しないでください。 mysqli 接続を確立できない場合は、例外がスローされる必要があります。例外が処理されない場合、バブルが発生し、致命的なエラーでスクリプトが停止します。自動的に例外をスローするように mysqli を構成できます。すべての mysqli 関数はさまざまな理由で失敗する可能性があり、関数内の各エラーを手動でチェックしない限り問題は通知されないため、これは非常に貴重です。接続を開く前に次の行を使用します: リーリー

    例外の処理方法を本当に理解していない限り、例外をキャッチしないでください。

    mysqli を使用して正しく接続する方法考えられる使用例については、次のセクションで説明します。

    mysqli_error() 接続関連の問題を示していただけますか? ###いいえ。

    mysqli_error($conn)

    mysqli 接続は成功すると予想されます。 $conn は有効な mysqli 接続である必要があります。そうでない場合は、次のエラー メッセージが表示されます:

    $conn->error

    mysqli_error($conn) も、接続関連のエラーを表示できません。


    関連:

    「mysqli_stmt_prepare」を呼び出すときにエラーを手動で確認する必要がありますか?

    返事
    0
  • キャンセル返事