Aktueller Standort: Startseite> Neueste Artikel> Mysqli :: set_charset Nach dem Einstellen des Zeichensatzes kann ich sicherstellen, dass Zeichen beim Schreiben von Daten in die Datenbank keine Fehler verursachen?

Mysqli :: set_charset Nach dem Einstellen des Zeichensatzes kann ich sicherstellen, dass Zeichen beim Schreiben von Daten in die Datenbank keine Fehler verursachen?

gitbox 2025-09-04

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Vorunabhängiger Codebeispiel</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Initialisieren Sie die Programmumgebung...&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-variable">$version</span></span><span> = </span><span><span class="hljs-title function_ invoke__">phpversion</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"PHPVersion:"</span></span><span> . </span><span><span class="hljs-variable">$version</span></span><span> . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Bei der Verwendung von PHP -Erweiterung von PHP für Datenbankvorgänge sind Charakter -Set -Probleme einer der wahrscheinlichsten Faktoren, die auf das Schreiben von Daten oder Fehlern führen. MySQLI :: set_Charset ist die offizielle empfohlene Methode zum Einrichten des Datenbankverbindungszeichensatzes. Nachdem Sie jedoch einige Details eingestellt haben, um sicherzustellen, dass die Daten in die Datenbank korrekt geschrieben werden.

1. Grundlegende Methoden zum Festlegen von Zeichensätzen

 <span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_errno) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Verbindung ist fehlgeschlagen: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// Stellen Sie den Zeichen auf utf8mb4</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8mb4"</span></span><span>)) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Versäumte das Set -Zeichensatz: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error);
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Charakter -Set erfolgreich: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>();
</span></span>

Hier ist UTF8MB4 der empfohlene Zeichensatz, da es den vollständigen Unicode unterstützt, einschließlich Sonderzeichen wie Emoji.

2. Stellen Sie sicher, dass die Datenbanktabelle und der Feldzeichen festgelegt sind

Auch wenn der Verbindungszeichen korrekt eingestellt ist, erscheint verständlich, wenn der Zeichensatz der Datenbanktabelle oder des Feldes unterschiedlich ist. Die Zeichensätze von Checklisten und Feldern können über SQL abgefragt werden:

 <span><span><span class="hljs-keyword">SHOW</span></span><span> </span><span><span class="hljs-keyword">CREATE</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> your_table;
</span></span>

Es wird empfohlen, den auf UTF8MB4 festgelegten Tabellen- und Feldzeichen einheitlich einzustellen:

 <span><span><span class="hljs-keyword">ALTER</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> your_table </span><span><span class="hljs-keyword">CONVERT</span></span><span> </span><span><span class="hljs-keyword">TO</span></span><span> </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8mb4 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8mb4_unicode_ci;
</span></span>

3.. Verwenden Sie vorbereitete Aussagen

Das direkte Spleißen von SQL -Zeichenfolgen ist anfällig für Charakter -Codierungsprobleme oder SQL -Injektionsrisiken. Verwenden Sie Vorverarbeitungsanweisungen, um sicherzustellen, dass die Daten in der richtigen Codierung geschrieben werden:

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO your_table (name, content) VALUES (?, ?)"</span></span><span>);
</span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-string">"Testen Sie den Benutzer"</span></span><span>;
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-string">"Hier sind einige Inhalte, die Sonderzeichen enthalten ??"</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"ss"</span></span><span>, </span><span><span class="hljs-variable">$name</span></span><span>, </span><span><span class="hljs-variable">$content</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>

MySQLI verarbeitet automatisch Parameter basierend auf dem Verbindungszeichensatz, wodurch das Risiko von verstümmelten Zeichen verringert wird.

4. Stellen Sie sicher, dass die Codierung der Webseite und der PHP -Datei konsistent ist

  • Die PHP-Datei selbst sollte ohne BOM als UTF-8 gespeichert werden.

  • Die HTML -Seite sollte den Zeichensatz deklarieren:

 <span><span><span class="hljs-tag">&lt;<span class="hljs-name">meta</span></span></span><span> </span><span><span class="hljs-attr">charset</span></span><span>=</span><span><span class="hljs-string">"UTF-8"</span></span><span>&gt;
</span></span>

Auf diese Weise bleiben die vom Benutzer eingegebenen Daten, die von PHP verarbeiteten Zeichenfolgen und der in die Datenbank geschriebene Zeichen fest.

5. Zusammenfassung

  1. Setzen Sie das Verbindungszeichen mit $ mysqli-> set_charset ("utf8mb4") .

  2. Stellen Sie sicher, dass die Datenbank-, Tabellen- und Feldzeichensätze mit dem Verbindungszeicheneinsatz übereinstimmen.

  3. Versuchen Sie, Vorverarbeitungsanweisungen zum Einfügen von Daten zu verwenden.

  4. Stellen Sie sicher, dass die PHP-Dateien und Seiten als UTF-8 codiert werden.

Befolgen Sie diese Schritte, um Zeichenfehler oder verstümmte Codes zu vermeiden, wenn Daten in der Datenbank in den größten Teil geschrieben werden.