So lösen Sie das Problem verstümmelter chinesischer Zeichen beim Einfügen von Daten in die Datenbank in PHP

PHPz
Freigeben: 2023-04-10 11:16:43
Original
638 Leute haben es durchsucht

PHP ist eine beliebte Open-Source-Skriptsprache, die hauptsächlich für die Webentwicklung verwendet wird. Wenn wir PHP für die Entwicklung verwenden, kann es zu Problemen mit verstümmelten chinesischen Zeichen kommen, insbesondere beim Einfügen chinesischer Daten in die Datenbank. In diesem Artikel erfahren Sie, wie Sie diese Situation in PHP vermeiden können.

  1. Zeichenkodierung festlegen

Wenn wir eine Verbindung zur Datenbank herstellen, müssen wir den Datenbankzeichensatz so einstellen, dass er mit dem Zeichensatz des PHP-Skripts übereinstimmt, da sonst beim Einfügen chinesischer Informationen verstümmelte Zeichen angezeigt werden. Beim Herstellen einer Verbindung zur Datenbank fügen wir den folgenden Code hinzu:

$con=mysqli_connect("localhost","my_user","my_password","my_db");
mysqli_query($con,"SET NAMES utf8");
Nach dem Login kopieren
  1. Bestehen Sie auf der Verwendung der UTF-8-Kodierung

UTF-8 ist eine Multibyte-Kodierung, die den Unicode-Zeichensatz unterstützt. Durch die Verwendung der UTF-8-Kodierung kann sichergestellt werden, dass Daten, die Chinesisch enthalten, korrekt in die Datenbank eingefügt werden können. Mit der folgenden Methode können wir überprüfen, ob die PHP-Datei UTF-8-codiert ist:

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

Wenn die zurückgegebene $encoding „UTF-8“ ist, ist die PHP-Datei UTF-8-codiert.

  1. Verwenden Sie PHP-Funktionen, um Zeichenfolgen zu maskieren.

Beim Ausführen von SQL-Anweisungen müssen wir Funktionen verwenden, um Zeichenfolgen in SQL-sichere Zeichenfolgen umzuwandeln, um die Datensicherheit der Datenbank zu gewährleisten. PHP bietet eine Funktion zum Escapen von Strings – mysqli_real_escape_string(). Wir können die Zeichenfolge einfach maskieren, bevor wir neue Daten einfügen.

$name=mysqli_real_escape_string($con,$_POST['name']);
$sql="INSERT INTO TABLE_NAME(name) VALUES('$name')";
mysqli_query($con,$sql);
Nach dem Login kopieren
  1. Verwendung von PHP Data Objects (PDO)

PDO ist eine PHP-Datenbankabstraktionsschicht, die eine Vielzahl von Datenbanken unterstützen kann. Bei Verwendung von PDO können wir die Zeichenkodierung für die Datenbankverbindung festlegen und die Funktion PDO::quote() zum Escape verwenden.

$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();
}
Nach dem Login kopieren

Wenn Sie bei der Verwendung von PHP-Einfügung auf das Problem verstümmelter chinesischer Zeichen stoßen, können wir es mit der oben genannten Methode lösen. Korrekte Zeichenkodierungseinstellungen, String-Escape und PDO-Verwendung können sicherstellen, dass wir chinesische Daten jederzeit erfolgreich in die Datenbank einfügen können.

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter chinesischer Zeichen beim Einfügen von Daten in die Datenbank in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage