Heim > Artikel > Backend-Entwicklung > So lösen Sie das Problem verstümmelter chinesischer Zeichen beim Einfügen von Daten in die Datenbank in PHP
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.
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");
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");
Wenn die zurückgegebene $encoding „UTF-8“ ist, ist die PHP-Datei UTF-8-codiert.
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);
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(); }
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!