Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem verstümmelter Zeichen, die in PHP in die Datenbank eingefügt werden

So lösen Sie das Problem verstümmelter Zeichen, die in PHP in die Datenbank eingefügt werden

PHPz
PHPzOriginal
2023-03-28 15:00:29763Durchsuche

Beim Einfügen von Daten in die Datenbank mit PHP werden manchmal verstümmelte Zeichen auftreten. Dies liegt daran, dass die Zeichensätze während der Datenübertragung inkonsistent sind. In diesem Artikel erfahren Sie, wie Sie das Problem lösen können, dass PHP verstümmelte Zeichen in die Datenbank einfügt.

1. Überprüfen Sie den Datenbank-Zeichensatz

Bevor Sie mit der Lösung des Problems beginnen, müssen Sie zunächst den Datenbank-Zeichensatz überprüfen. Mit dem folgenden Befehl können Sie den Zeichensatz der aktuellen Datenbank anzeigen:

SHOW VARIABLES LIKE 'character_set_database';

Wenn der Datenbankzeichensatz nicht UTF-8 ist, müssen Sie ihn in UTF-8 ändern, um sicherzustellen, dass die Daten eingefügt und gelesen werden können korrekt. Sie können den folgenden Befehl verwenden, um den Datenbankzeichensatz auf UTF-8 zu ändern:

ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;

2. Stellen Sie das PHP-Dateikodierungsformat ein.

Stellen Sie das Kodierungsformat oben in der PHP-Datei auf UTF-8 ein, um dies sicherzustellen Die Zeichenfolgen in PHP sind korrekt. In die Datenbank einfügen. Sie können den folgenden Code verwenden, um das PHP-Codierungsformat festzulegen:

header('Content-Type: text/html; charset=UTF-8');

3. Legen Sie das MySQLi-Codierungsformat fest

Wenn Sie Daten mithilfe der MySQLi-Erweiterung in PHP einfügen, müssen Sie das MySQLi-Codierungsformat festlegen. Sie können den folgenden Code verwenden, um das MySQLi-Codierungsformat festzulegen:

$mysqli = new mysqli("localhost", "username", "password", "database_name");
$mysqli -> set_charset("utf8");

4. Verwenden Sie die Funktion htmlspecialchars

Bevor Sie Daten einfügen, verwenden Sie die in PHP integrierte Funktion htmlspecialchars, um die Zeichenfolge zu maskieren, die eingefügt werden muss. Dadurch wird verhindert, dass Sonderzeichen Auswirkungen auf die Datenbank haben. Sie können den folgenden Code verwenden, um die Zeichenfolge zu maskieren:

$str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');

5. Verwenden Sie eine vorbereitete Anweisung

Die Verwendung einer vorbereiteten Anweisung kann SQL-Injection wirksam verhindern und auch verstümmelte Zeichen vermeiden. Sie können den folgenden Code verwenden, um Daten mithilfe einer vorbereiteten Anweisung einzufügen:

$stmt = $mysqli -> prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
$stmt -> bind_param("ss", $val1, $val2);
$val1 = htmlspecialchars($val1, ENT_QUOTES, 'UTF-8');
$val2 = htmlspecialchars($val2, ENT_QUOTES, 'UTF-8');
$stmt -> execute();

6. Verwenden Sie PDO

Mit PDO können Datenbankoperationen bequemer abgewickelt und verstümmelte Zeichen effektiv vermieden werden. Sie können den folgenden Code verwenden, um Daten mit PDO einzufügen:

$conn = new PDO("mysql:host=localhost;dbname=database_name;charset=utf8", "username", "password");
$stmt = $conn -> prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
$stmt -> execute([$val1, $val2]);

7. Zusammenfassung

Beim Einfügen in die Datenbank mit PHP kommt es sehr häufig zu Problemen mit verstümmeltem Code. Sie können das Problem verstümmelter Zeichen jedoch leicht lösen, indem Sie einfach die oben genannten Schritte befolgen. Es ist zu beachten, dass Sie vor der Durchführung von Datenbankoperationen zunächst prüfen müssen, ob der Datenbankzeichensatz korrekt ist. Dies ist ein wichtiger Schritt, um verstümmelte Zeichen zu vermeiden.

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter Zeichen, die in PHP in die Datenbank eingefügt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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