首頁 >後端開發 >PHP問題 >php插入資料中文亂碼資料給資料庫怎麼解決

php插入資料中文亂碼資料給資料庫怎麼解決

PHPz
PHPz原創
2023-04-10 09:44:46652瀏覽

PHP是一種流行的開源腳本語言,主要用於Web開發。當我們在使用PHP進行開發時,可能會遇到中文亂碼的問題,尤其是在資料庫插入中文資料時。這篇文章將向大家介紹如何在PHP中避免這種情況的發生。

  1. 設定字元編碼

當我們在連接資料庫時,需要設定資料庫字元集與PHP腳本的字元集一致,否則插入中文資訊會出現亂碼。我們在連接資料庫時加入以下程式碼:

$con=mysqli_connect("localhost","my_user","my_password","my_db");
mysqli_query($con,"SET NAMES utf8");
  1. 堅持使用UTF-8編碼

UTF-8是一種多位元組編碼,支援Unicode字元集。使用UTF-8編碼可以確保資料庫中包含中文的資料能夠正確插入。我們可以透過以下方法來檢查PHP檔案是否為UTF-8編碼:

$encoding = mb_detect_encoding($str, "UTF-8,GBK,GB2312,BIG5");

如果傳回的$encoding是“UTF-8”,則PHP檔案正是UTF-8編碼。

  1. 使用PHP函數轉義字串

在執行SQL語句時,我們需要使用函數將字串轉換為SQL安全字串,從而確保資料庫的數據安全性。 PHP提供了轉義字串的函數-mysqli_real_escape_string()。我們在插入新資料之前將字串轉義即可。

$name=mysqli_real_escape_string($con,$_POST['name']);
$sql="INSERT INTO TABLE_NAME(name) VALUES('$name')";
mysqli_query($con,$sql);
  1. 使用PHP Data Objects(PDO)

#PDO是一個PHP的資料庫抽象層,可以支援多種資料庫。在使用PDO時,我們可以為資料庫連接設定字元編碼,並使用PDO::quote()函數進行轉義。

$dsn = "mysql:host=localhost;dbname=myDatabase;charset=utf8";
$username = "username";
$password = "password";
$options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
);

try {
    $pdo = new PDO($dsn, $username, $password, $options);
    $name = $pdo->quote($_POST['name']);
    $sql = "INSERT INTO TABLE_NAME(name) VALUES($name)";
    $pdo->exec($sql);
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
    die();
}

在使用php insert時,如果遇到中文亂碼問題,我們可以透過上述方法來解決。正確的字元編碼設定、字串轉義以及PDO使用可以確保無論何時,我們都能成功將中文資料插入資料庫。

以上是php插入資料中文亂碼資料給資料庫怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn