-1

ユーザーがサーバー上のデータベースの詳細を入力できるようにするコードがいくつかあります。詳細を送信すると、コードはデータベースへの接続をチェックして、有効な詳細が入力されたかどうかを確認します。次のように、接続が機能するか機能する場合に、変数が true であるという結果が得られるようにします。

$mysqli = new mysqli($_POST['dbHost'],$_POST['dbUser'],$_POST['dbPassword'],$_POST['dbName']);
if ($mysqli->connect_errno) { $badDetails = true; }
else { goodDetails = true; }

問題は、詳細が実際に正しくない場合、上記のコードの最初の行から「不明な MySQL サーバー ホスト」を示す PHP 警告が表示されることです。

これを回避する方法は何ですか?PHP がこれに対して独自の可視エラーをスローするのは望ましくありません。エラーを自分で処理したいのです。

4

3 に答える 3

2

視覚的なエラーについて心配する必要はありません。実稼働環境では、これらを ini でオフにする必要があり、すべてのエラーは画面だけでなくサーバーのログに記録する必要があります。

これは、display_errors設定とerror_reporting()で構成されます。

多くのフレームワークは、重大度に応じて適切な方法でエラーを表示するカスタム実装で PHP エラー ハンドラーをオーバーライドします。
これを実現するには、PHP エラー ハンドラをオーバーライドします。

マニュアルに見られるように、通常のエラーと例外のカスタム ハンドラを登録できます。また、ユーザー定義エラーをトリガーすることもできます。

于 2013-09-30T14:23:34.360 に答える
0

ただ使用するdie()

$mysqli = new mysqli($_POST['dbHost'],$_POST['dbUser'],$_POST['dbPassword'],$_POST['dbName']) or die("Database Connection Failed");
于 2013-09-30T14:14:04.133 に答える
0

手っ取り早い汚い方法は、エラーの抑制です。

$con = @mysqli_connect( /* info */ );

これはすべてのエラーを抑制し、mysqli には知っておく必要のある複数のエラーが含まれている可能性があるため、これをそのままにしておくべきではないことに注意してください。

最初にホスト変数をチェックして、エラーが発生した理由を確認します。ダイも使えます。

$con = mysqli_connect(/* info */) or die ("SQL Error!");

どこを見るかについては、ホスト変数が実際に設定されていることを確認し、その値を確認してください。

if (!isset($_POST['dbHost'])) {
    echo "Host var not set!";
} else {
    echo "Host var set: " . $_POST['dbHost']
}
于 2013-09-30T14:15:54.020 に答える