Bei Verwendung einer MySQL -Datenbank ist es wichtig sicherzustellen, dass der Zeichensatz korrekt eingestellt ist. Die korrekte Einstellung der Zeichensätze wirkt sich nicht nur auf die Leistung der Datenbank aus, sondern wirkt sich auch direkt auf den Speicher und Lesen von Daten aus, insbesondere wenn es um mehrsprachige Inhalte geht. Wenn der Zeichensatz nicht ordnungsgemäß festgelegt ist, kann dies zu Fehlern für verstümmelten Code, Datenverlust oder Datenbankabfrage führen.
PHP stellt MySQLI -Erweiterungen zur Manipulation von MySQL -Datenbanken bereit, und die MySQLi :: Character_Set_Name und MySQLI :: SELECT_DB -Methoden können uns helfen, sicherzustellen, dass das Zeichensatz korrekt festgelegt wird. In diesem Artikel wird ausführlich erläutert, wie Sie diese beiden Methoden verwenden, um den Zeichensatz einer Datenbank zu konfigurieren.
Der Zeichensatz definiert die in der Datenbank gespeicherten und angezeigten Zeichencodierungsregeln. Zu den gemeinsamen Zeichensets gehören UTF8 , Latin1 , UTF8MB4 usw. Sowohl UTF8 als auch UTF8MB4 unterstützen mehrsprachige Charakterspeicher, aber UTF8MB4 ist ein umfassenderer Charakter -Set, der mehr Symbole und Emojis unterstützt.
Nachdem die Datenbankverbindung standardmäßig mit MySQLI eine Verbindung zur Datenbank mit MySQLI hergestellt hat, verwendet sie standardmäßig den Standardzeichensatz der MySQL -Datenbank. Wenn Sie sicherstellen möchten, dass die Datenbankverbindung einen bestimmten Zeichensatz verwendet, können Sie die Methode MySQLI :: SELECT_DB verwenden.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Eine Verbindung erstellen</span></span><span>
</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_name"</span></span><span>);
</span><span><span class="hljs-comment">// Überprüfen Sie, ob die Verbindung erfolgreich ist</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</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 aufutf8</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">"utf8"</span></span><span>);
</span><span><span class="hljs-comment">// Wählen Sie eine Datenbank aus</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">select_db</span></span><span>(</span><span><span class="hljs-string">"database_name"</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Im obigen Code wird Set_CharSet verwendet, um den Zeichensatz festzulegen, um sicherzustellen, dass die Datenbankverbindung den UTF8 -Zeichensatz annimmt und verstümmelte Codeprobleme vermeidet.
Die MySQLI :: Zeichen_Set_Name -Methode wird verwendet, um den von der aktuellen Verbindung verwendeten Zeichensatz zu erhalten. Diese Methode ist nützlich, insbesondere beim Debuggen können Sie bestätigen, dass Sie erfolgreich auf den erforderlichen Charaktersatz umgestellt haben.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Holen Sie sich den Zeichensatz der aktuellen Datenbankverbindung</span></span><span>
</span><span><span class="hljs-variable">$current_charset</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><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Der aktuelle Zeichensatz ist: "</span></span><span> . </span><span><span class="hljs-variable">$current_charset</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Wenn der aktuelle Zeichensatz auf UTF8 eingestellt wurde, wird der obige Code ausgegeben:
<span><span><span class="hljs-section">Der aktuelle Zeichensatz ist: utf8</span></span><span>
</span></span>
Zusätzlich zum Einstellen des in PHP festgelegten Zeichens müssen Sie auch sicherstellen, dass die Zeichensatzeinstellungen der Datenbank und Tabelle konsistent sind. Wenn die Datenbank und Tabelle selbst unterschiedliche Zeichensätze verwenden, können Sie, auch wenn Sie den in PHP festgelegten Zeichen festlegen, nicht vollständig verstümmelten Code vermeiden.
<span><span><span class="hljs-keyword">CREATE</span></span><span> DATABASE database_name </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>
<span><span><span class="hljs-keyword">CREATE</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> table_name (
id </span><span><span class="hljs-type">INT</span></span><span> AUTO_INCREMENT </span><span><span class="hljs-keyword">PRIMARY</span></span><span> KEY,
name </span><span><span class="hljs-type">VARCHAR</span></span><span>(</span><span><span class="hljs-number">255</span></span><span>) </span><span><span class="hljs-keyword">NOT</span></span><span> </span><span><span class="hljs-keyword">NULL</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>
<span><span><span class="hljs-keyword">ALTER</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> table_name </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>
Nachdem sichergestellt wurde, dass die Zeichensatzeinstellungen der Datenbank und der Tabelle konsistent sind, sind die Datenbankvorgänge stabiler und können aufgrund einer Fehlanpassung des Charakters eingestellt werden.
Durch die Verwendung von MySQLI :: Zeichen_Set_Name und MySQLi :: SELECT_DB wird sichergestellt, dass die Datenbankverbindung den richtigen Zeichensatz verwendet, wodurch Probleme wie verstümmelten Code oder Datenverlust vermieden werden. Wenn Sie den richtigen Zeichensatz festlegen, können Sie nicht nur die Kompatibilität Ihres Datenspeichers verbessern, sondern auch sicherstellen, dass die aus der Datenbank gelesenen Datenbenutzer korrekt sind.
In der tatsächlichen Entwicklung wird empfohlen, immer den UTF8MB4 -Charaktersatz zu verwenden, da er mehr Zeichen und Symbole unterstützt, insbesondere wenn es sich um mehrsprachige Inhalte handelt, was effektiv vermieden werden kann.
Verwandte Tags:
mysqli