mysqli_connect() エラーを手動で確認する必要がありますか?
P粉031492081
P粉031492081 2023-10-27 10:51:49
0
1
791

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粉031492081
P粉031492081

全員に返信(1)
P粉251903163

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

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

警告が表示されず接続を作成できない場合は、おそらく、PHP が警告を表示するように構成されていないことを意味します。この場合、サーバー上のエラー ログ ファイルを確認する必要があります。場所がわからない場合は、phpinfo() code> を使用して情報を取得し、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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート