Wenn Sie PHP verwenden, um MySQL -Datenbanken zu manipulieren, ist die Einstellung des Zeichensatzes von entscheidender Bedeutung, insbesondere in Umgebungen, an denen chinesische oder andere Multibyte -Zeichen beteiligt sind. MySQLI :: set_charset und mySQLi_Set_Charset sind zwei Möglichkeiten, Zeichensätze von PHP zu setzen. Obwohl ihre Funktionen im Grunde genommen gleich sind, gibt es bestimmte Unterschiede in der Art und Weise, wie sie verwendet werden, und anwendbaren Szenarien. In diesem Artikel wird diese beiden Funktionen im Detail verglichen und ihre jeweiligen Nutzungsszenarien diskutieren.
Dies ist ein (OOP) -Stat-Ansatz (OOP), um Zeichensätze festzulegen. Es gehört zu einer Methode der MySQLI -Klasse und muss bei Verwendung durch das MySQLI -Instanzobjekt aufgerufen werden.
Beispiel:
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
if (!$mysqli->set_charset("utf8mb4")) {
die("Versäumte das Set -Zeichensatz: " . $mysqli->error);
}
Objektorientiertes Schreiben ist die Codestruktur klarer;
Bessere Kompatibilität mit modernen PHP -Programmierstilen;
Die Fehlermeldung konzentriert sich stärker auf das zu verarbeitende Objekt.
Dies ist eine Verfahrensfunktion. Im Gegensatz zu MySQLI :: set_charset hängt es nicht vom Objekt ab, sondern legt den Zeichen fest, indem die Parameter in die MySQLi -Verbindungsressource übergeben werden.
Beispiel:
$mysqli = mysqli_connect("localhost", "user", "password", "database");
if (!$mysqli) {
die("Verbindung ist fehlgeschlagen: " . mysqli_connect_error());
}
if (!mysqli_set_charset($mysqli, "utf8mb4")) {
die("Versäumte das Set -Zeichensatz: " . mysqli_error($mysqli));
}
Prozedurales Schreiben, geeignet für die schnelle Entwicklung von strukturiertem oder Skripten;
Es ist näher an den Entwicklungsgewohnheiten des frühen PHP;
Es ist freundlicher für Anfänger, weil die Grammatik relativ direkt ist.
Egal, ob es sich um mySQLI :: set_charset oder mySQLI_Set_Charset handelt, die zugrunde liegende MySQL C -API, die sie letztendlich aufrufen, ist der gleiche, dh mysql_set_character_set () .
Der einzige Unterschied ist die Aufrufmethode: Eine ist die Objektmethode und die andere ist die prozedurale Funktion.
Szene | Empfohlene Nutzungsmethode | Grund |
---|---|---|
Entwicklung unter Verwendung eines objektorientierten Stils | Mysqli :: set_charset | Behalten Sie die Codekonsistenz |
Schnelle Skripte, Miniprogramme | MySQLi_Set_Charset | Einfach und schnell |
Eine vorhandene Verfahrenscode -Bibliothek | MySQLi_Set_Charset | Halten Sie den Stil konsequent |
Verwenden Sie Frameworks oder moderne PHP -Projekte | Mysqli :: set_charset | Normalerweise ist die Verwendung von OOP leichter zu warten |
Die Einstellungen für Zeichensatz sollten so schnell wie möglich ausgeführt werden <br> Es wird empfohlen, den Zeichensatz sofort nach erfolgreichem Erstellen der Datenbankverbindung festzulegen, um Probleme mit verstümmelten Code zu vermeiden, wenn Daten gelesen/schreiben.
Vermeiden Sie den gemischten Gebrauch <br> Mischen Sie in demselben Projekt nicht häufig OOP- und Verfahrensschreiben, da dies zu verwirrendem Code -Stil und schwer zu warten ist.
Verwenden Sie UTF8MB4 anstelle von UTF8
Wenn Emoji oder einige CJK -Zeichen beteiligt sind, verwenden Sie beispielsweise UTF8MB4 :
$mysqli->set_charset("utf8mb4"); // oder mysqli_set_charset($mysqli, "utf8mb4");
Debugging -Fehlermeldung <br> Die Verwendung von Fehler oder MySQLi_Error () Ausgabemistrics kann bei der Fehlerbehebung der Verbindung oder der Zeichensatzfehler bei der Fehlerbehebung helfen.
Nehmen wir an, Sie müssen über eine Schnittstelle aus einer Adresse von einer Adresse aus einer Adresse eingestuft werden und diese Konfigurationen verwenden, um eine Datenbankverbindung einzurichten:
$config = json_decode(file_get_contents("https://gitbox.net/config/db.json"), true);
$mysqli = new mysqli("localhost", $config['user'], $config['pass'], $config['dbname']);
$mysqli->set_charset($config['charset']);
In dieser Art von Szenario können Objektmethoden oder Prozessfunktionen je nach Gesamtcodearchitektur flexibel verwendet werden.
Mysqli :: set_charset ist eine Objektmethode, die moderner und strukturierter ist.
MySQLI_Set_Charset ist eine Prozessfunktion, die einfacher und schnell gestartet ist.
Die beiden Funktionen sind konsistent, und die Wahl hängt vom Entwicklungsstil und den Projektanforderungen ab.
Ignorieren Sie keine Einstellungen für Zeichensatz, sondern die Grundlage für die Sicherstellung der Datenkorrektheit.
In der Entwicklungspraxis wird empfohlen, eine Methode auszuwählen, die mit dem allgemeinen architektonischen Stil übereinstimmt, und die Aufrechterhaltung der Codekonsistenz ist weitaus wichtiger als die Auswahl einer einzelnen Funktion.