Maison >base de données >tutoriel mysql >Comment récupérer des colonnes entières et numériques en tant que types natifs à partir de MySQL en PHP ?
Comment renvoyer des colonnes entières et numériques de MySQL sous forme d'entiers et de numériques en PHP ?
Lorsque vous travaillez avec des bases de données MySQL en PHP, assurez-vous il est crucial que les colonnes entières et numériques soient correctement récupérées et représentées. L'extension PDO en PHP fournit un moyen de le faire, mais cela peut être problématique si le pilote natif MySQL n'est pas utilisé.
Pourquoi les colonnes entières sont renvoyées sous forme de chaînes
Le pilote natif MySQL ne prend pas en charge le renvoi de valeurs numériques sous forme d'entiers et de numériques. Cela signifie que, par défaut, toutes les colonnes sont récupérées sous forme de chaînes. Même avec l'indicateur PDO PDO::ATTR_STRINGIFY_FETCHES défini sur false, le comportement du conducteur ne change pas.
Comment y remédier
La solution est de passer au mysqlnd pilote pour PHP. Ce pilote prend en charge le renvoi de valeurs entières et numériques dans leurs types PHP natifs.
Installation
Pour installer le pilote mysqlnd sur Ubuntu, vous pouvez suivre les étapes suivantes :
Vérification
Pour vérifier que le pilote mysqlnd est utilisé, exécutez php -i. La sortie doit maintenant inclure "mysqlnd" dans la section pdo_mysql.
Paramètres PDO
Assurez-vous que les paramètres PDO suivants sont correctement définis :
Valeurs renvoyées
Avec le pilote mysqlnd, les types de retour suivants sont utilisés :
Exemple
Après être passé à le driver mysqlnd, vous pourrez récupérer correctement les valeurs entières et numériques :
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); $result = $pdo->query('SELECT * FROM table'); $row = $result->fetch(PDO::FETCH_OBJ); echo $row->integer_col; // 1 (int) echo $row->double_col; // 1.55 (float) echo $row->decimal_col; // '1.20' (string) echo $row->bigint_col; // '18446744073709551615' (string)
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!