當前位置: 首頁> 最新文章列表> 使用$mysqli->errno 和$mysqli->error 打印完整錯誤日誌

使用$mysqli->errno 和$mysqli->error 打印完整錯誤日誌

M66 2025-05-28
  • :該屬性返回最後一次MySQL 操作的錯誤代碼。如果沒有錯誤發生,它將返回0。

  • mysqli::$error :該屬性返回最後一次MySQL 操作的錯誤描述信息。如果沒有錯誤發生,它將返回空字符串。

這兩個屬性對於開發人員在調試數據庫相關問題時非常有用,能夠提供足夠的錯誤信息來幫助找出問題所在。

2. 連接數據庫時的錯誤調試

數據庫連接是與MySQL 服務器交互的第一步。如果數據庫連接失敗,通常是由於服務器地址、用戶名、密碼或者數據庫名錯誤引起的。使用mysqli::$errnomysqli::$error可以幫助我們了解具體的錯誤信息。

下面是一個示例代碼,演示如何使用這兩個屬性來捕獲並打印連接錯誤:

 <?php
// 設置數據庫連接參數
$servername = "m66.net";
$username = "root";
$password = "password";
$dbname = "test_db";

// 創建 MySQLi 連接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查連接是否成功
if ($conn->connect_error) {
    echo "連接失败: " . $conn->connect_errno . " - " . $conn->connect_error;
    exit();
}

echo "連接成功!";
$conn->close();
?>

在這個代碼中,我們通過connect_error來檢查是否存在連接問題,並通過connect_errnoconnect_error打印出具體的錯誤信息。

3. 執行查詢時的錯誤調試

如果數據庫連接成功,但在執行SQL 查詢時發生錯誤,可以使用mysqli::$errnomysqli::$error來捕獲查詢錯誤。以下是一個查詢錯誤的示例:

 <?php
// 設置數據庫連接參數
$servername = "m66.net";
$username = "root";
$password = "password";
$dbname = "test_db";

// 創建 MySQLi 連接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查連接是否成功
if ($conn->connect_error) {
    echo "連接失败: " . $conn->connect_errno . " - " . $conn->connect_error;
    exit();
}

// 執行查詢
$sql = "SELECT * FROM non_existent_table"; // 假設這個表不存在
$result = $conn->query($sql);

// 檢查查詢是否成功
if (!$result) {
    echo "查詢失敗: " . $conn->errno . " - " . $conn->error;
}

$conn->close();
?>

在這個例子中,我們故意執行了一個不存在的表的查詢,導致查詢失敗。使用errnoerror打印出具體的錯誤代碼和錯誤描述。

4. 錯誤日誌輸出和格式化

在實際開發中,錯誤信息可能需要更詳細的日誌記錄,以便後期分析和調試。通過將錯誤信息輸出到文件或日誌管理系統,可以更加方便地追踪問題。以下是一個將錯誤信息記錄到文件的示例:

 <?php
// 設置數據庫連接參數
$servername = "m66.net";
$username = "root";
$password = "password";
$dbname = "test_db";

// 創建 MySQLi 連接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查連接是否成功
if ($conn->connect_error) {
    // 將錯誤信息寫入日誌文件
    error_log("連接失败: " . $conn->connect_errno . " - " . $conn->connect_error, 3, "error_log.txt");
    exit();
}

// 執行查詢
$sql = "SELECT * FROM non_existent_table"; // 假設這個表不存在
$result = $conn->query($sql);

// 檢查查詢是否成功
if (!$result) {
    // 將錯誤信息寫入日誌文件
    error_log("查詢失敗: " . $conn->errno . " - " . $conn->error, 3, "error_log.txt");
}

$conn->close();
?>

在這個示例中,我們使用error_log函數將錯誤信息寫入到error_log.txt文件中。這樣就可以在後期查看這個日誌文件,方便排查問題。

5. 總結

使用mysqli::$errnomysqli::$error屬性,可以幫助我們在PHP 中捕獲並打印詳細的MySQL 錯誤信息。這對於調試數據庫連接問題和查詢錯誤非常有幫助。通過合理地使用這些屬性,我們能夠快速定位問題並進行修復,提高開發效率。

希望本文能夠幫助你理解如何在MySQL 數據庫操作中有效使用這兩個屬性進行錯誤調試。