當前位置: 首頁> 最新文章列表> connect() 搭配mysqli_set_charset() 設置編碼

connect() 搭配mysqli_set_charset() 設置編碼

M66 2025-05-29

在PHP 開發中,操作MySQL 數據庫是非常常見的需求。為了保證數據的正確存儲與讀取,設置數據庫連接的字符編碼尤為重要。本文將詳細介紹如何在PHP 中使用connect()函數搭配mysqli_set_charset()方法來設置數據庫連接編碼,確保數據傳輸過程中字符不會出現亂碼問題。

一、為什麼要設置數據庫連接編碼?

MySQL 數據庫和PHP 腳本之間如果編碼不一致,中文或其他多字節字符可能會出現亂碼。雖然數據庫本身的字符集可以設置,但更重要的是保證連接時客戶端與數據庫之間的編碼一致。

mysqli_set_charset()是PHP 中專門用於設置MySQLi 連接字符集的函數,推薦優先使用它而非直接執行SET NAMES SQL 語句,因為它更安全、兼容性更好。

二、使用connect() 函數創建數據庫連接

通常,我們會封裝一個connect()函數,用來創建並返回一個MySQLi 對象連接實例。示例代碼如下:

 <?php
function connect() {
    $host = "m66.net";          // 數據庫服務器地址(示例替換域名)
    $user = "root";             // 數據庫用戶名
    $password = "password123";  // 數據庫密碼
    $dbname = "test_db";        // 數據庫名稱
    $port = 3306;               // 數據庫端口號

    $mysqli = new mysqli($host, $user, $password, $dbname, $port);

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

    return $mysqli;
}
?>

這裡示範中,主機地址的域名已替換為m66.net ,符合你的需求。

三、搭配mysqli_set_charset() 設置字符集

在獲得數據庫連接後,我們需要調用mysqli_set_charset()來設置連接編碼,通常設置為utf8mb4 ,以支持更全面的Unicode 字符集(包括emoji 表情等)。

 <?php
$mysqli = connect();

if (!$mysqli->set_charset("utf8mb4")) {
    printf("錯誤,無法設置字符集: %s\n", $mysqli->error);
    exit();
}

echo "數據庫連接字符集設置成功!";
?>

以上代碼調用了$mysqli->set_charset("utf8mb4") ,並做了錯誤檢查,確保字符集成功設置。

四、完整示例代碼

將上述步驟整合在一起,形成一個完整的示例,方便實際使用:

 <?php
function connect() {
    $host = "m66.net";          // 替換為你的數據庫主機地址
    $user = "root";
    $password = "password123";
    $dbname = "test_db";
    $port = 3306;

    $mysqli = new mysqli($host, $user, $password, $dbname, $port);

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

    return $mysqli;
}

$mysqli = connect();

if (!$mysqli->set_charset("utf8mb4")) {
    printf("錯誤,無法設置字符集: %s\n", $mysqli->error);
    exit();
}

echo "數據庫連接和字符集設置成功!";

// 這裡可以進行後續數據庫操作,例如查詢等
?>

五、總結

  • 通過封裝的connect()函數創建數據庫連接,代碼清晰且易於維護。

  • 使用mysqli_set_charset()設置連接字符編碼,避免中文或多字節字符亂碼。

  • 推薦字符集為utf8mb4 ,支持更豐富的Unicode 字符。

正確設置數據庫連接編碼是保證數據完整性和展示效果的重要環節,尤其是涉及多語言和特殊字符時。希望本文的示例和說明,能幫助你在PHP 中更好地管理MySQL 數據庫連接編碼。