Maison > développement back-end > tutoriel php > Pourquoi les champs entiers MySQL sont-ils récupérés sous forme de chaînes en PHP ?

Pourquoi les champs entiers MySQL sont-ils récupérés sous forme de chaînes en PHP ?

Linda Hamilton
Libérer: 2024-12-10 13:49:11
original
188 Les gens l'ont consulté

Why are MySQL integer fields retrieved as strings in PHP?

Champ entier MySQL récupéré sous forme de chaîne en PHP : démêler la conversion

Lors de la récupération de données à partir d'une base de données MySQL à l'aide de PHP, vous pouvez rencontrer un situation déroutante où un champ entier est renvoyé sous forme de chaîne. Ce comportement inattendu provient de la nature du traitement des données par PHP.

Pour comprendre ce phénomène, considérons le scénario suivant :

// Query the database and retrieve the user's ID
$result = $mysqli->query("SELECT userid FROM DB WHERE name='john'");
Copier après la connexion

En supposant que la requête récupère avec succès l'ID de l'utilisateur, qui est un nombre entier dans la base de données, vous pouvez vous attendre à ce que le code suivant stocke la valeur récupérée sous forme de variable entière :

$row = $result->fetch_assoc();
$id = $row['userid'];
Copier après la connexion

Cependant, si vous continuez pour vérifier le type de données de la variable $id à l'aide de gettype($id), vous serez surpris de constater qu'elle renvoie "string".

Pourquoi cela se produit-il ?

Le nœud du problème réside dans la manière dont PHP gère les données récupérées à partir d'une base de données MySQL. Par défaut, PHP convertit toutes les données récupérées en chaînes, quel que soit leur type de données d'origine dans la base de données. Cela garantit un traitement uniforme des données, ce qui facilite leur traitement par les applications PHP.

Résoudre le problème

Plusieurs méthodes peuvent être utilisées pour reconvertir l'entier sous forme de chaîne. à son type de données entier prévu :

  • Casting de type explicite : Utilisation de l'opérateur (int) ou la fonction intval() :
$id = (int) $row['userid']; // Equivalent to intval($row['userid'])
Copier après la connexion
  • Déclaration du type de données : Utilisez l'instruction AS de MySQL dans votre requête pour spécifier explicitement le type de données du champ renvoyé :
$result = $mysqli->query("SELECT userid AS INT FROM DB WHERE name='john'");
Copier après la connexion

En intégrant l'une de ces solutions dans votre code, vous pouvez vous assurer que les champs entiers récupérés de votre base de données MySQL sont correctement géré sous forme d'entiers dans votre application PHP.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal