Maison > développement back-end > Problème PHP > PHP requête données codées en UTF-8 dans la base de données

PHP requête données codées en UTF-8 dans la base de données

PHPz
Libérer: 2023-04-10 11:34:09
original
981 Les gens l'ont consulté

À l'ère Internet d'aujourd'hui, je pense que la plupart des sites Web sont développés sur la base du langage PHP. Cependant, PHP utilise l'encodage UTF-8 par défaut à partir de la version 5.0. Pour les développeurs qui ne sont pas familiers avec l'encodage UTF-8, ils peuvent rencontrer quelques problèmes d'encodage, notamment lors du traitement des requêtes de base de données. Dans cet article, je vais vous apprendre à interroger correctement les données codées en UTF-8.

Tout d’abord, comprenons d’abord ce qu’est l’encodage UTF-8.

Qu'est-ce que l'encodage UTF-8 ?

UTF-8 est un codage de caractères de longueur variable et l'une des implémentations d'Unicode. Il code chaque caractère Unicode dans une séquence de 1 à 4 octets et utilise le code ASCII pour le codage sur un seul octet de caractères constitués uniquement de lettres de l'alphabet. En raison de son excellente polyvalence et compatibilité, UTF-8 est largement utilisé sur Internet.

Comment interroger des données codées en UTF-8 ?

En PHP, l'opération de base de données la plus courante consiste à interroger des données. Mais si vos données sont codées en UTF-8, vous devez faire attention aux aspects suivants lors de l'interrogation :

  1. Vous devez définir le jeu de caractères UTF-8 lors de la connexion à la base de données

Lors de la connexion à la base de données, vous vous devez définir le jeu de caractères de la connexion à la base de données en spécifiant le paramètre charset=UTF-8. Par exemple :

$link = mysqli_connect("localhost", "my_user", "my_password", "my_database");
mysqli_set_charset($link, "utf8");
Copier après la connexion
  1. Les instructions SQL doivent spécifier le jeu de caractères

Lorsque vous effectuez des requêtes, vous devez spécifier le jeu de caractères dans l'instruction SQL. Par exemple :

$sql = "SELECT * FROM table_name WHERE name=?";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, "s", $name);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $result);
mysqli_stmt_fetch($stmt);
mysqli_stmt_close($stmt);
Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons la fonction mysqli_prepare() pour préparer l'instruction SQL, et utilisons un point d'interrogation dans l'instruction SQL pour représenter les paramètres qui doivent être liés. Utilisez ensuite la fonction mysqli_stmt_bind_param() pour lier les paramètres. Le premier paramètre de la fonction est le type de données. Ici, nous utilisons « s » pour représenter le type de chaîne. Enfin, l'instruction SQL est exécutée via la fonction mysqli_stmt_execute(), le jeu de résultats est lié à l'aide de la fonction mysqli_stmt_bind_result() et les résultats de la requête sont obtenus à l'aide de la fonction mysqli_stmt_fetch().

  1. Vérifiez si les données ont été codées en UTF-8

Lors de l'interrogation, vous devez vérifier les données obtenues pour vous assurer qu'il s'agit de données codées en UTF-8. Vous pouvez utiliser la fonction mb_detect_encoding() en PHP pour détecter le format d'encodage d'une chaîne. Par exemple :

$str = "需要检测的字符串";
if(mb_detect_encoding($str, "UTF-8", true) === false){
    $str = iconv("GB2312", "UTF-8", $str);
}
Copier après la connexion

Dans l'exemple ci-dessus, nous avons d'abord utilisé la fonction mb_detect_encoding() pour détecter le format d'encodage de la chaîne $str. Si le résultat est faux, cela signifie qu'il ne s'agit pas d'une chaîne encodée en UTF-8, et nous devons utiliser la fonction iconv() pour le convertir en une chaîne codée en UTF-8.

Résumé

Grâce aux étapes ci-dessus, nous pouvons interroger correctement les données codées en UTF-8. Bien entendu, ce qui précède n’est qu’une brève introduction à la façon d’interroger des données codées en UTF-8. Dans les projets réels, des situations plus complexes peuvent devoir être gérées. Cependant, tant que nous maîtrisons les méthodes et techniques de base, nous n’aurons plus de difficultés à résoudre les problèmes d’encodage chinois.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal