在PHP中,處理數據庫連接錯誤通常涉及到以下幾個方面:
error_reporting()
函數來實現,它會將所有錯誤報告到標準錯誤輸出。在生產環境中,建議關閉錯誤報告以提高性能,但在開發過程中開啟它有助于發現和調試問題。error_reporting(E_ALL);
ini_set('display_errors', '1');
mysqli
或PDO
擴展連接數據庫時,可以通過檢查返回值來捕獲連接錯誤。對于mysqli
,可以使用mysqli_connect_error()
函數來獲取連接失敗的錯誤信息;對于PDO
,可以使用PDO::errorInfo()
方法。// mysqli
$conn = mysqli_connect("localhost", "username", "password", "database");
if (!$conn) {
die("連接失敗: " . mysqli_connect_error());
}
// PDO
try {
$conn = new PDO("mysql:host=localhost;dbname=database", "username", "password");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "連接失敗: " . $e->getMessage();
}
function handleError($errno, $errstr, $errfile, $errline) {
// 記錄錯誤日志
error_log("Error: [$errno] $errstr on line $errline in $errfile", 0);
// 發送通知(例如,通過電子郵件)
sendNotification($errno, $errstr);
}
set_error_handler("handleError");
mysqli
,可以使用mysqli_catch_error()
函數;對于PDO
,可以使用try-catch
語句。// mysqli
function catchError($conn) {
if ($conn->errno) {
throw new Exception("數據庫連接錯誤: " . $conn->error);
}
}
$conn = mysqli_connect("localhost", "username", "password", "database");
mysqli_catch_error($conn, $conn);
// PDO
try {
$conn = new PDO("mysql:host=localhost;dbname=database", "username", "password");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
throw new Exception("數據庫連接錯誤: " . $e->getMessage());
}
通過以上方法,可以有效地處理PHP數據庫連接錯誤,確保應用程序的穩定性和可靠性。