はい、これまでに質問されています。他の答えは役に立たなかった。mysql:PHPを使用して、mysqli_connect()が失敗したときにどのようにエラーをキャッチしますか?
私はmysqlとphpの新機能です。 私は大学のコースを受講しており、私の前にhtml-php-mysqlプロジェクトがあります。
私は30年にわたりコーディングしており、リレーショナルデータベースは20で作業しています。だから私はいくつかの経験があります。はい、それは宿題ですが、私は動作しない単純なコードの必要なビットを書いています。
クラスには教科書がなく、私たちは「ウェブ上で必要とされるすべてのヘルプを見つける」ことが指摘されました。 phpで猫をスキンする方法はたくさんあるので、私のインストラクターのものと一致する例を見つけることは難しい課題でした。廃止予定のmysql_ *の例を見つけると、検索が難しくなります。また、コードサンプルのほとんどは、クエリが常に機能すると想定しています。そしてdbも同様に接続します。これが最後のビットです。私のPHPは私がそれに投げることができる他のすべてのエラーを処理します。
このスニペットはフランケンシュタインですが、これは動作しませんでした。私とコードを抱いてください。
この制作コードを作るのに多くのことがありますが、それは目標ではありません。私はおもちゃのHTMLファイルとPHPのスクリプトをおもちゃのmysqlデータベースに接続し、それほど重要な結果を得ようとしていません。これらのすべての考慮事項は密接なものではありません。
私はコードが正常にシステムがダウンしていることを伝えることができ、エラーを記録することができます。
「rootx」が無効なため、PHPエラーがスローされます。
"PHP Warning: mysqli_connect(): (HY000/1045): Access denied for user 'rootx'@'localhost'"
しかし、エラーは検出されず、「catch」はスキップされ、「finally」句が実行されます。
mysqli_report(MYSQLI_REPORT_STRICT);
が追加されました。この行がこの同じ問題を解決したためです。それは助けになりませんでした。
ワンパンがどのように設定されているのでしょうか?インストーラによって指示されたので、私はこのウィンドウ10のボックスにインストールしました。
mysqli_report(MYSQLI_REPORT_STRICT);
try {
$conn = mysqli_connect('localhost', 'rootx', '', 'csc443');
// server, username, pw, dbname
}
} catch(Exception $e) {
log_action("dbconnectfail " . $username . " | " . $e->getCode() . " | " . $e->getMessage());
header('Location: 500.php');
return;
} finally {
log_action("dbconnect localhost::csc443");
}
エラーが発生すると、接続はfalseを返します。値が偽であることを確認してください –
私は接続が失敗するように強制しています。私は失敗したログインを検出するコードをテストできるように、接続が失敗するようにします。 私の問題は、このエラーを正常に処理できるコードを書くことです。 mysqlがログに記録されたエラーをスローするので、try-catch-finallyが良い選択だと思った! –