Position actuelle: Accueil> Derniers articles> MySQLI_RESULT :: $ Longueurs Conseils pour utiliser mysqli_fetch_assoc ()

MySQLI_RESULT :: $ Longueurs Conseils pour utiliser mysqli_fetch_assoc ()

gitbox 2025-05-29

Lors de l'exploitation d'une base de données MySQL à l'aide de PHP, MySQLI_FETCH_ASSOC () est l'une des méthodes d'extraction des résultats les plus courantes, qui renvoie une ligne de l'ensemble de résultats en tant que tableau associatif. MySQLI_RESULT :: $ LONGTES est une propriété de la classe MySQLI_RESULT . Après avoir extrait une ligne de l'ensemble de résultats, il renvoie un tableau de longueurs d'octets des champs de la ligne actuelle.

Les deux, bien que non souvent mentionnés, sont très pratiques lorsqu'ils traitent de certains scénarios de bord, en particulier dans la vérification de l'intégrité des données, le traitement des données binaires et le rendu de l'interface utilisateur dynamique. Cet article explorera quelques conseils pratiques lors de l'utilisation de ces deux fonctions en profondeur.

1. Obtenez la longueur réelle du champ par rapport à la longueur attendue

mysqli_fetch_assoc () obtient la "valeur" du champ, pas sa taille d'octet d'origine. MySQLI_RESULT :: $ Longueurs Renvoie la longueur d'octets des données d'origine en transmission, ce qui est très important lorsqu'il s'agit de caractères UTF-8 ou de types blob.

 $conn = new mysqli("localhost", "user", "password", "database");
$result = $conn->query("SELECT name, bio FROM users");

while ($row = $result->fetch_assoc()) {
    $lengths = $result->lengths;
    echo "Name: " . $row['name'] . " (Length: " . $lengths[0] . " bytes)\n";
    echo "Bio: " . $row['bio'] . " (Length: " . $lengths[1] . " bytes)\n";
}

Cette technique convient aux scénarios où la longueur du contenu doit être contrôlée avec précision, comme l'envoi de digestion, la vérification des données de journal ou la limitation de la taille du contenu via l'en-tête HTTP.

2. Détecter le contenu troncature ou codant pour des exceptions

Parfois, les données transmises de l'extrémité avant peuvent être tronquées par la base de données en raison de problèmes de codage ou de contraintes de stockage. Utilisez $ result-> longueurs pour détecter si la longueur réelle du contenu atteint les attentes et la vérifiez en combinaison avec la limite de longueur maximale du champ.

Par exemple, si la longueur maximale du champ Bio est de 65535 octets et des longueurs de $ [1] est exactement égale à 65535, vous pouvez vous méfier du texte qui peut avoir été tronqué.

3. Analyser les données sur le terrain avec un texte riche ou un contenu multilingue

Pour un contenu textuel riche ou des données contenant des caractères chinois, japonais et coréens, le nombre de caractères et d'octets peut être très différent. La combinaison de strlen ($ row ['champ']) avec $ result-> longueurs peut évaluer la distribution de codage des caractères.

 $charLength = strlen($row['bio']);
$byteLength = $lengths[1];
if ($byteLength / $charLength > 2) {
    echo "Ce champ peut contenir des caractères multi -yte,Transcodage ou compression recommandée。";
}

4. Générer un en-tête précis pour le téléchargement ou le contenu de retour de l'API

Lors de la création d'API REST, en particulier lors du retour de gros texte ou de fichiers binaires (tels que les PDF, les images), une longueur de contenu exacte est requise. Combiné avec $ result-> longueurs, vous pouvez définir dynamiquement l'en-tête.

 header("Content-Type: text/plain");
header("Content-Length: " . $lengths[0]);
echo $row['document_text'];

Ceci est particulièrement critique lors de la création d'une interface de téléchargement de fichiers similaire à https://gitbox.net/api/v1/documents/123/download .

5. Débogage de la base de données pour retourner l'exception des données

Lorsque vous interrogez les données renvoyées de la base de données à des caractères brouillés ou manquants, la première étape consiste à comparer strlen ($ row ['field']) avec $ result-> longueurs [index] pour voir s'il y a un codage qui n'est pas à la hauteur ou les caractères sont tronqués par erreur.

Cette méthode est plus efficace que les chaînes d'impression aveuglément, en particulier pour le traitement du contenu binaire.

résumé

MySQLI_RESULT :: $ Longueurs n'est pas un outil fréquemment utilisé dans le développement quotidien, mais il peut jouer un rôle important lorsque vous avez besoin d'un contrôle plus profond des octets bruts des données de retour de MySQL . En particulier dans les scénarios tels que le codage sensible, la sensible à la troncature du contenu ou l'optimisation de la bande passante de transmission, l'utilisation combinée peut apporter un plus grand contrôle.

Grâce à ces techniques, il peut non seulement améliorer la robustesse de l'interaction PHP et MySQL, mais également jeter une bonne base pour l'expansion de la fonction ultérieure et l'optimisation des performances.