2016-11-21 1 views
-1

はい、これまでに質問されています。他の答えは役に立たなかった。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"); 
} 
+0

エラーが発生すると、接続はfalseを返します。値が偽であることを確認してください –

+0

私は接続が失敗するように強制しています。私は失敗したログインを検出するコードをテストできるように、接続が失敗するようにします。 私の問題は、このエラーを正常に処理できるコードを書くことです。 mysqlがログに記録されたエラーをスローするので、try-catch-finallyが良い選択だと思った! –

答えて

0

try、catch、finally節をすべて削除します。以下のコードを使用して、問題がどのように関連しているかを確認してください。

$conn = mysqli_connect('<server>', '<username>', '<password>', '<database-name>'); 
if (!$conn) { 
    // whatever processing you want to do upon error in connection 
    // like log error or send an email to admin 
    // I am just printing the error at the moment. 
    echo mysqli_connect_errno() . ":" . mysqli_connect_error(); 
    exit; 
} 

Official documentationより抜粋。

+0

私は接続を強制的に失敗させています。私は失敗したログインを検出するコードをテストできるように、接続が失敗するようにします。 私の問題は、このエラーを正常に処理できるコードを書くことです。 mysqlがログに記録されたエラーをスローするので、try-catch-finallyが良い選択だと思った! –

+0

oh .......接続資格情報が間違っていますか? –

+0

私は上記と私の元の質問で、私はいくつかのコードをテストすることができます失敗するには、接続を強制している。 –

関連する問題