是的,這已經被問過。其他答案沒有幫助。mysql:使用php,mysqli_connect()失敗時如何捕獲錯誤?
我是mysql和php的新手。 我正在參加大學課程,在我面前有一個html-php-mysql項目。
我一直在編碼30年,並使用關係數據庫20年。所以我有一些經驗。是的,這是作業,但我已經寫了一些不起作用的簡單代碼。
我覺得核心問題是班級沒有教科書,我們被指示「在網上找到你需要的所有幫助」。 由於有很多方法可以使用php皮膚貓,找到與我的教師相匹配的示例一直是一個挑戰。查找不推薦的mysql_ *示例會使搜索更加困難。大多數代碼示例假設查詢將始終有效!和db連接。這是最後一點。我的PHP處理所有其他錯誤,我可以扔在它。
這段代碼是frankenstein,但我沒有得到這個工作。忍受我和代碼。
毫無疑問,製作此生產代碼需要做很多事情,但這不是目標。我想獲得玩具html文件和php腳本連接到一個玩具mysql數據庫,併產生一個近乎平凡的結果。所有這些考慮都不是密切相關的。
我強制連接失敗,所以我的代碼可以優雅地告訴用戶系統已關閉,並且我可以記錄該錯誤。
由於「rootx」無效導致php錯誤。
"PHP Warning: mysqli_connect(): (HY000/1045): Access denied for user 'rootx'@'localhost'"
但是錯誤沒有被捕獲,「catch」被跳過並且「finally」子句運行。
mysqli_report(MYSQLI_REPORT_STRICT);
被添加,因爲這條線修復了這個相同的問題。它沒有幫助。
可能是如何配置wamp?我所做的只是在安裝程序的指導下安裝在這個Windows 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。檢查值是否爲假 –
我強制連接失敗。我希望連接失敗,以便測試檢測登錄失敗的代碼。 我的問題是編寫可以優雅地處理這個錯誤的代碼。 我以爲try-catch-finally是一個不錯的選擇,因爲mysql會拋出一個記錄錯誤! –