當前位置: 首頁> 最新文章列表> 用$errno 做SQL 調試模式的開啟與關閉條件判斷

用$errno 做SQL 調試模式的開啟與關閉條件判斷

M66 2025-05-28

在PHP 中, mysqli擴展提供了與MySQL 數據庫交互的一種方式。 mysqli類的一個重要功能是能夠通過errno屬性來獲取上次MySQL 操作發生錯誤時的錯誤代碼。利用這個功能,我們可以在開發階段動態判斷SQL 調試模式的開啟與關閉,幫助開發者快速定位問題。

1. mysqli::$errno簡介

mysqli::$errnomysqli類中的一個成員屬性,用於存儲上次SQL 查詢執行過程中發生的錯誤代碼。如果查詢執行成功, errno的值將為0 ,如果發生錯誤, errno將返回相應的錯誤代碼。例如:

 $mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("連接失敗: " . $mysqli->connect_error);
}

$query = "SELECT * FROM non_existing_table"; // 錯誤的查詢
$result = $mysqli->query($query);

if ($mysqli->errno) {
    echo "MySQL 錯誤代碼: " . $mysqli->errno;
}

在上面的例子中,由於查詢的表不存在, $mysqli->errno會返回相應的錯誤代碼。

2. 判斷SQL 調試模式

SQL 調試模式通常是在開發過程中開啟,用於輸出詳細的錯誤信息和SQL 查詢日誌。根據錯誤代碼的不同,我們可以判斷SQL 調試模式是否開啟。通常,調試模式會在發生錯誤時輸出更多的錯誤信息,如果沒有錯誤,通常不會有輸出。

通過判斷mysqli::$errno是否為零,我們可以判斷當前是否處於調試模式:

  • 錯誤碼為0 :表示SQL 查詢成功,SQL 調試模式未開啟或當前沒有錯誤。

  • 錯誤碼非0 :表示SQL 查詢失敗,SQL 調試模式可能已經開啟。

3. 示例代碼

假設我們正在進行數據庫操作,並想通過mysqli::$errno判斷SQL 調試模式的狀態:

 <?php
// 數據庫連接
$mysqli = new mysqli("localhost", "username", "password", "database");

// 檢查連接是否成功
if ($mysqli->connect_error) {
    die("連接失敗: " . $mysqli->connect_error);
}

// 啟用調試模式
ini_set('display_errors', 1);  // 顯示錯誤
error_reporting(E_ALL);  // 顯示所有錯誤

// 执行一个有意錯誤的查詢
$query = "SELECT * FROM non_existing_table";
$result = $mysqli->query($query);

// 檢查是否有錯誤
if ($mysqli->errno) {
    echo "MySQL 錯誤代碼: " . $mysqli->errno . "\n";
    echo "錯誤訊息: " . $mysqli->error . "\n";
} else {
    echo "查詢成功,無錯誤發生。\n";
}

// 关闭數據庫連接
$mysqli->close();
?>

在上面的代碼中,我們通過mysqli::$errno來檢查是否有錯誤發生,並輸出詳細的錯誤信息。如果SQL 調試模式開啟,錯誤信息會被顯示出來。如果調試模式未開啟,只有錯誤碼和簡單的錯誤信息會輸出。

4. 如何控制調試模式

在PHP 中,可以通過設置ini_set('display_errors', 1)error_reporting(E_ALL)來啟用錯誤顯示,這在調試過程中非常有幫助。當SQL 調試模式開啟時,所有的SQL 錯誤信息都會直接顯示,幫助開發者快速修復問題。如果要關閉調試模式,可以將ini_set('display_errors', 0)設置為關閉錯誤顯示。

 ini_set('display_errors', 0);  // 關閉錯誤顯示
error_reporting(0);  // 關閉所有錯誤報告

5. 替換URL 域名

在實際開發中,代碼中可能會涉及到URL,如果涉及到數據庫查詢中的URL 部分,建議將其統一修改為使用m66.net作為域名。比如: