Wenn wir PHP für die Datenbankentwicklung verwenden, müssen wir häufig SQL-Anweisungen verwenden, um Daten einzufügen. Beim Einfügen chinesischer Daten in die Datenbank werden jedoch manchmal verstümmelte Zeichen angezeigt. In diesem Artikel erfahren Sie, wie Sie dieses Problem lösen können.
Zuerst müssen wir überprüfen, wie die Datenbank kodiert ist. In MySQL können Sie die Kodierungsmethode der Datenbank mit der folgenden SQL-Anweisung überprüfen:
SHOW VARIABLES LIKE 'character_set_database';
Wenn das Ausgabeergebnis utf8 oder utf8mb4 ist, ist die Standardkodierungsmethode der Datenbank UTF-8. Wenn die Ausgabeergebnisse in anderen Kodierungen vorliegen, müssen Sie bei Verwendung der INSERT-Anweisung den entsprechenden Zeichensatz angeben.
In PHP können Sie die folgende Anweisung verwenden, um die Kodierungsmethode festzulegen:
mysqli_set_charset($mysqli, 'utf8');
Wobei $mysqli ein mit der Datenbank verbundenes MySQLi-Objekt ist. Durch Festlegen der Kodierungsmethode auf UTF-8 kann sichergestellt werden, dass beim Einfügen chinesischer Daten in die Datenbank keine verstümmelten Zeichen angezeigt werden.
Wenn die beiden oben genannten Methoden das verstümmelte Problem nicht lösen können, müssen wir den Zeichensatz in der INSERT-Anweisung angeben. Beispiel:
INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (N'中文', 'English', ...)
Verwenden Sie in der SQL-Anweisung N'', um die chinesische Zeichenfolge in Unicode-Codierung zu konvertieren, um sicherzustellen, dass die chinesische Zeichenfolge nicht verstümmelt wird.
Um SQL-Injection-Angriffe zu vermeiden und die Wiederverwendbarkeit von Code zu verbessern, empfehlen wir schließlich die Verwendung vorbereiteter Anweisungen. Vorbereitete Anweisungen können über MySQL- oder PDO-Objekte erstellt und dann beim Festlegen von Parametern die Codierungsmethode angegeben werden, zum Beispiel:
$stmt = $mysqli->prepare("INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (?, ?, ...)"); $stmt->bind_param("ss", $val1, $val2, ...); $stmt->execute();
In diesem Beispiel wird bei Verwendung der bind_param-Methode zum Festlegen von Parametern der Zeichensatz auf „ss“ festgelegt bedeutet, dass der Parameter ein Zeichenfolgentyp ist und der Zeichensatz UTF-8 ist.
Zusammenfassung
In diesem Artikel werden verschiedene Methoden vorgestellt, um das Problem des Hinzufügens verstümmelter chinesischer Zeichen in PHP INSERT SQL zu lösen, einschließlich der Überprüfung der Datenbankkodierung, der Festlegung der PHP-Kodierungsmethode, der Angabe des Zeichensatzes in der SQL-Anweisung und der Verwendung vorbereiteter Anweisungen. Während des Entwicklungsprozesses sollten wir die geeignete Methode entsprechend der tatsächlichen Situation auswählen und Codierungsstandards befolgen, um die Lesbarkeit und Wartbarkeit des Codes sicherzustellen.
Das obige ist der detaillierte Inhalt vonSo lösen Sie verstümmelte chinesische Daten, die durch PHP-Einfügung hinzugefügt wurden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!