Position actuelle: Accueil> Derniers articles> Comparaison entre mysqli :: get_charset et afficher des variables comme 'caractères_set_%' dans MySQL CLI

Comparaison entre mysqli :: get_charset et afficher des variables comme 'caractères_set_%' dans MySQL CLI

M66 2025-06-02

Lorsque vous utilisez PHP pour manipuler les bases de données MySQL, nous devons souvent faire attention aux paramètres des ensembles de caractères, en particulier en ce qui concerne les caractères chinois ou autres caractères multiples. Les paramètres de définition de caractères incorrects peuvent entraîner des erreurs de code ou de stockage de données brouillées. Pour les ensembles de caractères, l'extension MySQLI de PHP fournit la fonction MySQLI :: get_charset , tandis que dans l'outil de ligne de commande MySQL (CLI), nous utilisons généralement des variables Show comme 'caractères_set_%' pour afficher les variables associées.

Cet article analysera les différences entre les deux en profondeur pour aider les développeurs à comprendre leurs utilisations et leurs différences.

1 ?? Qu'est-ce que MySQLI :: get_charset?

MySQLI :: get_charset () est une méthode de l'objet MySQLI dans PHP, qui est utilisé pour obtenir les informations de jeu de caractères de la connexion actuelle.
Il renvoie un objet contenant les propriétés suivantes:

  • Charset : le nom du jeu de caractères du actuellement connecté, comme UTF8MB4

  • Collation : Collation, par ex. UTF8MB4_GENERAL_CI

  • DIR : Le répertoire du fichier de définition de jeu de caractères (généralement vide)

  • min_length , max_length , numéro , état : Informations sur le jeu de caractères utilisés en interne

Par exemple, utilisez du code pour obtenir le jeu de caractères de connexion actuel:

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

if ($mysqli->connect_error) {
    die('Échec de la connexion: ' . $mysqli->connect_error);
}

$charsetInfo = $mysqli->get_charset();
echo 'Jeu de caractères actuel: ' . $charsetInfo->charset . PHP_EOL;
echo 'Règles de tri: ' . $charsetInfo->collation . PHP_EOL;

$mysqli->close();
?>

Cette méthode s'adresse aux paramètres du jeu de caractères de l'objet de connexion MySQLI PHP actuel , qui est équivalent au paramètre MySQLI_SET_CHARSET () ou à la valeur par défaut.

2 ?? Qu'est-ce que des variables d'affichage comme «caractères_set_%»?

Dans la CLI MySQL ou d'autres outils SQL,
Vous pouvez afficher les variables liées au jeu de caractères du serveur MySQL actuel via la commande suivante:

 SHOW VARIABLES LIKE 'character_set_%';

Cela répertorie une série de configurations, telles que:

  • caractères_set_client : le jeu de caractères envoyé par le client au serveur

  • caractères_set_connection : le jeu de caractères de l'instruction d'analyse du serveur

  • caractères_set_database : le jeu de caractères de la base de données par défaut actuelle

  • caractères_set_results : le jeu de caractères du résultat de la requête est renvoyé par le serveur

  • caractères_set_server : jeu de caractères par défaut du serveur

  • caractères_set_system : jeu de caractères de métadonnées système

Ces variables impliquent à la fois des jeux de caractères au niveau du serveur et au niveau de la session , pas seulement des connexions PHP.

Par exemple, exécutez dans la CLI:

 mysql> SHOW VARIABLES LIKE 'character_set_%';

Vous pouvez voir:

Variable_name Valeur
caractères_set_client UTF8MB4
caractères_set_connection UTF8MB4
caractères_set_database UTF8MB4
caractères_set_results UTF8MB4
caractères_set_server UTF8MB4
caractères_set_system UTF8

Ces informations reflètent plus en détail la configuration du jeu de caractères de l'instance et de la session MySQL actuelles.

3 ?? Différence de base

Points de comparaison mysqli :: get_charset Afficher des variables comme 'caractères_set_%'
Afficher les objets Objet de connexion mysqli en php Configuration du serveur MySQL et paramètres de session
Se mettre en gamme Le jeu de caractères et la sorte de la sortie actuellement connectée Variables de jeu de caractères multiples pour le serveur et la session
Comment obtenir Méthode PHP Déclarations SQL
utiliser Confirmez le jeu de caractères utilisé par l'objet MySQLI Afficher et ajuster les jeux de caractères de niveau MySQL (client, connexion, base de données, etc.)
Gamme d'impact Affecte uniquement cette connexion PHP Session globale / actuelle, partage multi-client

En termes simples, mysqli :: get_charset () est une fin de PHP;
Afficher les variables comme 'caractères_set_%' est l'ensemble du serveur de base de données.

4 ?? Pourquoi les deux sont-ils importants?

Lorsque nous développons des applications multilingues ou multi-régions,
Assurez-vous que les jeux de caractères du client (PHP), de la connexion, de la base de données et du serveur sont cohérents.
C'est la clé pour éviter le code brouillé.

Par exemple:

  • Vous pouvez définir mysqli_set_charset ('utf8mb4') en php,
    Mais la caractères_set_database de la base de données est toujours latin1 ,
    Les données stockées dans ce cas peuvent avoir des problèmes.

  • Via mysqli :: get_charset () , vous pouvez confirmer si la couche de connexion PHP est définie avec succès;
    Et via des variables d'affichage comme 'caractères_set_%' , vous pouvez confirmer les paramètres par défaut du serveur et de la base de données.

Ce n'est qu'en combinant les deux que nous pouvons saisir pleinement le lien de jeu de caractères.

en conclusion

mysqli :: get_charset () et afficher des variables comme 'caractères_set_%'
Il s'agit de deux outils puissants pour les développeurs pour résoudre les problèmes de jeu de caractères.
L'un est du côté client (PHP) et un est du côté serveur (MySQL).

Comprendre les différences et les relations entre les deux,
Aide non seulement à rédiger des applications de haute qualité et sans brouillage,
Il peut également fournir plus d'indices lors du dépannage des flux de données du système transversal.

N'oubliez pas: la cohérence du jeu de caractères est un projet systématique.
Pas seulement les problèmes de configuration d'un côté de PHP ou MySQL.