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'");
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'];
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 :
$id = (int) $row['userid']; // Equivalent to intval($row['userid'])
$result = $mysqli->query("SELECT userid AS INT FROM DB WHERE name='john'");
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!