Aktueller Standort: Startseite> Neueste Artikel> Vergleich zwischen MySQLI :: get_charset und zeigen Sie Variablen wie 'charakter_set_%' in MySQL CLI

Vergleich zwischen MySQLI :: get_charset und zeigen Sie Variablen wie 'charakter_set_%' in MySQL CLI

M66 2025-06-02

Wenn wir PHP verwenden, um MySQL -Datenbanken zu manipulieren, müssen wir häufig auf die Charakter -Set -Einstellungen achten, insbesondere wenn es um chinesische oder andere Multibyte -Zeichen geht. Unsachgemäße Zeichensatzeinstellungen können zu Fehlern für verstümmelte Code oder Datenspeicher führen. Für Zeichensätze enthält die MySQLI -Erweiterung von PHP die Funktion MySQLi :: get_charset , während wir im Befehlszeilen -Tool (CLI) in MySQL (CLI) in der Regel Variablen wie 'Zeichen_Set_%' zum Anzeigen von verwandten Variablen verwenden.

Dieser Artikel wird die Unterschiede zwischen den beiden Tiefen analysieren, um Entwicklern zu helfen, ihre Verwendung und Unterschiede zu verstehen.

1 ?? Was ist MySQLI :: get_charset?

Mysqli :: get_charset () ist eine Methode des MySQLI -Objekts in PHP, mit dem die Zeichensatzinformationen der aktuellen Verbindung erhalten werden.
Es gibt ein Objekt zurück, das die folgenden Eigenschaften enthält:

  • Zeichenset : Der Zeichensatz Name des aktuell angeschlossenen, wie UTF8MB4

  • Zusammenfassung : Zusammenfassung, z. UTF8MB4_GENERAL_CI

  • DIR : Das Verzeichnis der Charakter -Set -Definitionsdatei (normalerweise leer)

  • min_length , max_length , nummer , Zustand : intern verwendete Zeichensatzinformationen

Verwenden Sie beispielsweise Code, um den aktuellen Verbindungszeichensatz zu erhalten:

 <?php
$mysqli = new mysqli('m66.net', 'user', 'password', 'database');

if ($mysqli->connect_error) {
    die('Verbindung ist fehlgeschlagen: ' . $mysqli->connect_error);
}

$charsetInfo = $mysqli->get_charset();
echo 'Aktueller Zeichensatz: ' . $charsetInfo->charset . PHP_EOL;
echo 'Sortierregeln: ' . $charsetInfo->collation . PHP_EOL;

$mysqli->close();
?>

Diese Methode richtet sich an die Zeichensatzeinstellungen des aktuellen PHP MySQLI -Verbindungsobjekts , das dem Einstellungs- oder Standardwert von MySQLI_Set_Charset () oder Standardwert entspricht.

2 ?? Was sind Showvariablen wie 'charakter_set_%'?

In der MySQL CLI oder anderen SQL -Tools,
Sie können die mit Zeichen gesetzten verwandten Variablen des aktuellen MySQL -Servers über den folgenden Befehl anzeigen:

 SHOW VARIABLES LIKE 'character_set_%';

Dies listet eine Reihe von Konfigurationen auf, wie z. B.:

  • Zeichen_Set_Client : Der vom Client an den Server gesendete Zeichensatz

  • Zeichen_Set_Connection : Der Zeichensatz der Server -Parsing -Anweisung

  • Zeichen_Set_Database : Der Zeichensatz der aktuellen Standarddatenbank

  • charakter_set_results : Der Zeichensatz des Abfrageergebnisses wird vom Server zurückgegeben

  • Zeichen_Set_Server : Server -Standardzeichensatz

  • Zeichen_Set_System : Systemmetadaten Zeichensatz

Diese Variablen beinhalten sowohl Charaktersätze auf Serverebene als auch Sitzungsebene , nicht nur mit PHP-Verbindungen.

Zum Beispiel in der CLI laufen:

 mysql> SHOW VARIABLES LIKE 'character_set_%';

Sie können sehen:

Variable_name Wert
charakter_set_client UTF8MB4
charakter_set_connection UTF8MB4
charakter_set_database UTF8MB4
charakter_set_results UTF8MB4
Zeichen_Set_Server UTF8MB4
Zeichen_Set_System UTF8

Diese Informationen spiegeln die Charakter -Set -Konfiguration der aktuellen MySQL -Instanz und -sitzung besser wider.

3 ?? Kernunterschied

Vergleichspunkte Mysqli :: get_charset Variablen wie 'charakter_set_%' anzeigen
Objekte anzeigen MySQLi -Verbindungsobjekt in PHP MySQL Server -Konfiguration und Sitzungsparameter
Reichweite erhalten Der Charakter -Set und die Art der aktuell verbundenen Mehrere Zeichensatzvariablen für Server und Sitzung
Wie man bekommt PHP -Methode SQL -Anweisungen
verwenden Bestätigen Sie den von MySQLI Objekt verwendeten Zeichensatz MySQL-Level-Zeichensätze (Client, Verbindung, Datenbank usw.) anzeigen und anpassen
Aufprallbereich Betrifft nur diese PHP -Verbindung Globale/aktuelle Sitzung, mehrklassische Freigabe

Einfach ausgedrückt, Mysqli :: get_charset () ist ein Ende von PHP;
Anzeigen Variablen wie 'charakter_set_%' ist der gesamte Datenbankserver.

4 ?? Warum sind beide wichtig?

Wenn wir mehrsprachige oder multi-region-unterstützte Anwendungen entwickeln,
Stellen Sie sicher, dass die Zeichensätze des Clients (PHP), der Verbindung, der Datenbank und des Servers konsistent sind.
Es ist der Schlüssel, um verstümmelte Code zu vermeiden.

Zum Beispiel:

  • Sie können MySQLI_Set_Charset ('utf8mb4') in PHP festlegen.
    Aber die charakter_set_database der Datenbank ist immer noch latein1 ,
    Die in diesem Fall gespeicherten Daten können Probleme haben.

  • Über MySQLI :: get_charset () können Sie bestätigen, ob die PHP -Verbindungsschicht erfolgreich eingestellt wird.
    Und über Variablen wie 'Charakter_Set_%' können Sie die Standardeinstellungen des Servers und der Datenbank bestätigen.

Nur durch Kombination der beiden können wir den Charakter -Set -Link vollständig erfassen.

abschließend

Mysqli :: get_charset () und Variablen wie 'charakter_set_%' anzeigen
Es sind zwei leistungsstarke Werkzeuge für Entwickler, um Probleme mit Charaktersetieren zu beheben.
Einer ist auf der Seite Client (PHP) und einer auf der Seite Server (MySQL).

Verstehen Sie die Unterschiede und Beziehungen zwischen beiden,
Hilft nicht nur dazu bei, hochwertige, verstümmelte Anwendungen zu schreiben.
Es kann auch mehr Hinweise liefern, wenn die Daten zur Fehlerbehebung bei der Fehlerbehebung fließt.

Denken Sie daran: Die Charakter -Set -Konsistenz ist ein systematisches Projekt.
Nicht nur Konfigurationsprobleme auf einer Seite von PHP oder MySQL.