Lorsque vous utilisez PHP pour manipuler les bases de données MySQL, le réglage du jeu de caractères est crucial, en particulier dans les environnements impliquant des caractères chinois ou autres caractères multi-gytets. MySQLI :: set_charset et mysqli_set_charset sont deux façons de définir des ensembles de caractères fournis par PHP. Bien que leurs fonctions soient fondamentalement les mêmes, il existe certaines différences dans la façon dont ils sont utilisés et des scénarios applicables. Cet article comparera ces deux fonctions en détail et discutera de leurs scénarios d'utilisation respectifs.
Il s'agit d'une façon orientée objet (POO) de définir des ensembles de caractères. Il appartient à une méthode de la classe MySQLI et doit être appelé via l'objet d'instance MySQLI lorsqu'il est utilisé.
Exemple:
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
if (!$mysqli->set_charset("utf8mb4")) {
die("Échec du jeu de caractères: " . $mysqli->error);
}
Écriture orientée objet, la structure du code est plus claire;
Meilleure compatibilité avec les styles de programmation PHP modernes;
Le message d'erreur est plus concentré sur l'objet à traiter.
Il s'agit d'une fonction procédurale. Contrairement à MySQLI :: Set_Charset , il ne dépend pas de l'objet, mais définit plutôt le jeu de caractères en passant les paramètres dans la ressource de connexion MySQLI .
Exemple:
$mysqli = mysqli_connect("localhost", "user", "password", "database");
if (!$mysqli) {
die("Échec de la connexion: " . mysqli_connect_error());
}
if (!mysqli_set_charset($mysqli, "utf8mb4")) {
die("Échec du jeu de caractères: " . mysqli_error($mysqli));
}
Écriture procédurale, adaptée au développement rapide de structurés ou scénarisés;
Il est plus proche des habitudes de développement du PHP précoce;
Il est plus amical pour les novices car la grammaire est relativement directe.
Qu'il s'agisse de mysqli :: set_charset ou de mysqli_set_charset , l'API MySQL C sous-jacent qu'ils appellent finalement est la même, c'est-à-dire MySQL_SET_CHARACTER_SET () , il n'y a donc pas de différence substantielle dans les fonctionnalités entre les deux, et les deux peuvent atteindre le but de définir le jeu de caractères client.
La seule différence est la méthode d'appel: l'une est la méthode de l'objet et l'autre est la fonction procédurale.
Scène | Méthode d'utilisation recommandée | raison |
---|---|---|
Développement à l'aide d'un style orienté objet | mysqli :: set_charset | Gardez la cohérence du code |
Scripts rapides, mini-programmes | mysqli_set_charset | Simple et rapide |
Une bibliothèque de code procédurale existante | mysqli_set_charset | Garder le style cohérent |
Utilisez des frameworks ou des projets PHP modernes | mysqli :: set_charset | Utiliser généralement la POO est plus facile à maintenir |
Les paramètres du jeu de caractères doivent être effectués dès que possible <br> Il est recommandé de définir le jeu de caractères immédiatement après avoir réussi à établir la connexion de la base de données pour éviter les problèmes de code brouillé lorsque les données sont lues / écrites.
Évitez l'utilisation mixte <br> Ne mélangez pas fréquemment la POO et la rédaction de procédure dans le même projet, car cela provoquera un style de code déroutant et difficile à maintenir.
Utilisez UTF8MB4 au lieu de UTF8
Si des emoji ou certains caractères CJK sont impliqués, assurez-vous d'utiliser UTF8MB4 , par exemple:
$mysqli->set_charset("utf8mb4"); // ou mysqli_set_charset($mysqli, "utf8mb4");
Message d'erreur de débogage <br> L'utilisation d'erreurs ou d'erreurs de sortie MySQLI_ERROR () peut aider à dépanner la connexion ou les défaillances du jeu de caractères.
Supposons que vous ayez besoin d'obtenir des configurations liées à l'ensemble de caractères à partir d'une adresse via une interface et d'utiliser ces configurations pour configurer une connexion de base de données:
$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']);
Dans ce type de scénario, les méthodes d'objet ou les fonctions de processus peuvent être utilisées de manière flexible, en fonction de l'architecture de code globale.
MySQLI :: Set_Charset est une méthode d'objet, plus moderne et structurée;
MySQLI_SET_CHARSET est une fonction de processus, qui est plus simple et rapide à démarrer;
Les deux fonctions sont cohérentes et le choix dépend du style de développement et des exigences du projet;
N'ignorez pas les paramètres des ensembles de caractères, c'est la base pour garantir l'exactitude des données.
Dans la pratique du développement, il est recommandé de choisir une méthode cohérente avec le style architectural global, et le maintien de la cohérence du code est bien plus important que le choix d'une seule fonction.
Étiquettes associées:
mysqli