In PHP sind die Zeichensatzeinstellungen für die korrekte Verarbeitung der Datenbank von entscheidender Bedeutung, wenn eine MySQL -Datenbank betrieben wird. Der richtige Zeichensatz kann verstümmelter Code vermeiden und den richtigen Speicher und Abruf von Daten sicherstellen. Mysqli :: get_charset und MySQLI_Query ("Set -Namen ...") sind in beide Richtungen, um Zeichensätze zu bewältigen, aber ihre Funktionen und Verwendung sind unterschiedlich. Dieser Artikel wird die Unterschiede und anwendbaren Szenarien der beiden ausführlich vergleichen.
Mysqli :: get_charset ist eine Methode in der MySQLI -Erweiterung, um den Zeichensatz der aktuell verbundenen Angeschlossenen zu erhalten. Es wird nicht den Zeichensatz geändert, sondern gibt die von der aktuellen Datenbankverbindung verwendeten Zeichensatzinformationen zurück.
$charset = $mysqli->get_charset();
Diese Methode gibt ein Objekt mit Zeichensatzinformationen zurück, das den folgenden Inhalt enthält:
Charset : Der Name des derzeit verwendeten Zeichens Zeichen.
Zusammenfassung : Die Korrekturlesenregeln für den aktuellen Zeichensatz.
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$charset = $mysqli->get_charset();
echo "Aktueller Zeichensatz: " . $charset->charset . "<br>";
echo "Aktuelle Korrekturlesenregeln: " . $charset->collation . "<br>";
$mysqli->close();
?>
MySQLI :: get_charset wird hauptsächlich verwendet, um den Zeichensatz zu überprüfen, der von der aktuellen Verbindung im Programm verwendet wird. Dies ist sehr nützlich für das Debuggen oder Protokollieren, insbesondere wenn mehrere Verbindungen und die Charaktersätze geändert werden.
Set Namen ist eine SQL -Anweisung, mit der der Zeichensatz von Verbindungen nach dem Erstellen einer Verbindung zu einer MySQL -Datenbank eingerichtet wird. Diese Einstellung wirkt sich auf alle nachfolgenden Abfragen und Datenaustausche auf die Verbindung aus und stellt die Konsistenz des Zeichensatzes sicher.
mysqli_query($conn, "SET NAMES 'charset_name'");
wobei charset_name der Zeichensatzname ist (z. B. UTF8 oder UTF8MB4 ).
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
// Stellen Sie den Zeichen ein, auf das festgelegt ist utf8mb4
mysqli_query($mysqli, "SET NAMES 'utf8mb4'");
// Bestätigen Sie die Einstellungen für die Zeichensatzeinstellungen
$result = $mysqli->query("SHOW VARIABLES LIKE 'character_set_client'");
$row = $result->fetch_assoc();
echo "Aktueller Zeichensatz设置: " . $row['Value'] . "<br>";
$mysqli->close();
?>
Die Anweisung Set -Namen ist geeignet, um sicherzustellen, dass der Zeichensatz der Datenbankverbindung nach jeder Verbindung auf den angegebenen Wert festgelegt wird. Insbesondere beim Umgang mit verschiedenen codierten Daten ist es wichtig sicherzustellen, dass der Zeichensatz konsistent ist. Wenn beispielsweise die in der Datenbank gespeicherten Daten mit UTF-8 codiert werden, sollte der festgelegte Namen 'UTF8MB4' verwendet werden, um die Konsistenz festzustellen und beim Einfügen von Daten einen verstümmelten Code zu vermeiden.
Mysqli :: get_charset : Wird nur verwendet, um den Zeichensatz der aktuellen Verbindung zu erhalten, und ändert keine Einstellungen. Es wird verwendet, um den aktuellen Zeichensatzstatus zu überprüfen.
MySQLI_Query ("Set -Namen ...") : Wird verwendet, um den Zeichensatz der aktuellen Verbindung festzulegen. Dieser Befehl stellt sicher, dass nachfolgende Abfragen unter Verwendung des angegebenen Zeichensatzes codiert und dekodiert werden.
Mysqli :: get_charset : Wird normalerweise verwendet, wenn Sie den aktuellen Zeichensatz wie Debuggen oder Protokollierung erhalten und bestätigen müssen.
MySQLI_Query ("Set -Namen ...") : Normalerweise wird der Zeichensatz unmittelbar nach der Verbindung zur Datenbank festgelegt, insbesondere wenn Dateninsertion oder Aktualisierung der Zeichensatzkonsistenz sicherstellen.
MySQLI :: get_charset : Bei dem Aufrufen ist keine SQL -Anweisung erforderlich, auf die direkt über das Verbindungsobjekt zugegriffen wird.
MySQLI_Query ("Namensnamen ...") : Eine SQL -Anweisung muss ausgeführt werden, geeignet für Szenarien, in denen Datenbankabfragen ausgeführt werden.
Mit MySQLI :: get_charset kann die Zeichensatzinformationen der aktuellen Verbindung problemlos abgerufen werden, die zum Debuggen oder Überprüfen eines Zeichensatzes geeignet sind.
Verwenden Sie MySQLI_Query ("Set -Namen ..."), um das Zeichensatz nach der Datenbankverbindung festzulegen, um sicherzustellen, dass alle nachfolgenden Abfragen den richtigen Zeichensatz verwenden.
Unabhängig davon, welche Methode Sie auswählen, muss sie basierend auf den tatsächlichen Bedürfnissen entschieden werden. Im Allgemeinen wird normalerweise empfohlen, Zeichensätze nach der Verbindung zu einer Datenbank einzurichten, um die Integrität und Korrektheit der Daten zu gewährleisten. MySQLI :: get_charset wird eher verwendet, um den Status des Zeichens der Verbindung zu überprüfen oder zu bestätigen.