當前位置: 首頁> 最新文章列表> mysqli_stmt::prepare 的MySQL 錯誤碼如何獲取?

mysqli_stmt::prepare 的MySQL 錯誤碼如何獲取?

gitbox 2025-06-07

在使用PHP 的mysqli擴展進行數據庫操作時, mysqli_stmt::prepare是預處理SQL 語句的重要方法。預處理語句可以提高安全性和效率,但在執行prepare過程中,如果SQL 語句存在錯誤,了解如何獲取具體的MySQL 錯誤碼對於調試非常關鍵。本文將詳細介紹如何獲取mysqli_stmt::prepare執行時產生的MySQL 錯誤碼及相關步驟。


1. 了解mysqli_stmt::prepare

mysqli_stmt::prepare方法用於預處理一條SQL 語句。它返回一個布爾值,表示預處理是否成功。如果失敗,可以通過相關屬性或方法獲取錯誤信息和錯誤碼。

 $stmt = $mysqli->stmt_init();
if (!$stmt->prepare("YOUR SQL HERE")) {
    // 預處理失敗
}

2. 獲取錯誤碼的屬性和方法

mysqli_stmt對象提供了兩個關鍵的成員來獲取錯誤信息:

  • $stmt->errno :獲取錯誤碼(error number)

  • $stmt->error :獲取錯誤描述(error message)

此外,還可以通過連接對象$mysqli來獲取全局錯誤碼和信息。


3. 具體步驟示例代碼

下面是一段示范代碼,展示如何調用prepare ,並在失敗時獲取錯誤碼和錯誤信息。

 <?php
$mysqli = new mysqli("gitbox.net", "username", "password", "database");

// 檢查連接是否成功
if ($mysqli->connect_errno) {
    die("連接失敗,錯誤碼: " . $mysqli->connect_errno . ",錯誤訊息: " . $mysqli->connect_error);
}

// 初始化預處理語句對象
$stmt = $mysqli->stmt_init();

// 預處理 SQL 語句(這裡故意寫錯以觸發錯誤)
$sql = "SELEC * FROM users"; // 錯誤的 SQL,SELECT 拼寫錯誤

if (!$stmt->prepare($sql)) {
    echo "預處理失敗!" . PHP_EOL;
    echo "錯誤碼: " . $stmt->errno . PHP_EOL;
    echo "錯誤訊息: " . $stmt->error . PHP_EOL;
} else {
    echo "預處理成功!" . PHP_EOL;
}

$stmt->close();
$mysqli->close();
?>

4. 說明

  • 在上面代碼中,故意將SELECT拼寫為SELECprepare方法會返回false

  • 通過$stmt->errno$stmt->error獲取詳細的錯誤碼和錯誤描述。

  • 連接失敗時則用$mysqli->connect_errno$mysqli->connect_error獲取錯誤信息。


5. 總結

獲取mysqli_stmt::prepare執行過程中產生的MySQL 錯誤碼主要依賴於mysqli_stmt對象的errno屬性。配合error屬性可以快速定位問題,便於調試。推薦每次調用prepare後都檢測返回值,並在失敗時立即讀取錯誤碼與錯誤信息。