<span><span><span class="hljs-meta"><?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...<br>"</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">"<br>"</span></span><span>;
</span><span><span class="hljs-meta">?></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.
<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>->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>->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>-></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>->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>-></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.
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>
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>-></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>-></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>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$stmt</span></span><span>-></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.
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"><<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>>
</span></span>
Auf diese Weise bleiben die vom Benutzer eingegebenen Daten, die von PHP verarbeiteten Zeichenfolgen und der in die Datenbank geschriebene Zeichen fest.
Setzen Sie das Verbindungszeichen mit $ mysqli-> set_charset ("utf8mb4") .
Stellen Sie sicher, dass die Datenbank-, Tabellen- und Feldzeichensätze mit dem Verbindungszeicheneinsatz übereinstimmen.
Versuchen Sie, Vorverarbeitungsanweisungen zum Einfügen von Daten zu verwenden.
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.
Verwandte Tags:
mysqli