Renvoi d'entiers et de chiffres en tant que types en PHP à partir de MySQL
Malgré la définition de PDO::ATTR_STRINGIFY_FETCHES sur false, vous pouvez rencontrer des problèmes lorsque les colonnes numériques sont toujours renvoyés sous forme de chaînes au lieu d’entiers ou de chiffres. Ce comportement est souvent attribué à un problème d'implémentation du pilote.
La différence mysqlnd
La clé pour résoudre ce problème réside dans la garantie que vous utilisez mysqlnd pilote pour PHP. Lors de la visualisation de php -i, l'absence de "mysqlnd" dans la section pdo_mysql indique que le pilote natif est utilisé à la place.
Installation de mysqlnd
Sur Ubuntu, installez php5-mysqlnd au lieu de php5-mysql. Pour garantir une transition réussie, suivez ces étapes :
Vérification mysqlnd
Lors de l'installation de php5-mysqlnd, php -i devrait maintenant mentionner explicitement "mysqlnd" dans la section pdo_mysql.
Paramètres PDO
Définissez les attributs PDO suivants pour garantir des données appropriées gestion :
Valeurs renvoyées
Avec le pilote et les paramètres corrects, les colonnes numériques seront renvoyés selon les types PHP appropriés :
Par exemple, les données suivantes :
+-----------+-----------+----------+-------------+--------------+ | integer_col | double_col | float_col | decimal_col | bigint_col | +-----------+-----------+----------+-------------+--------------+ | 1 | 1.55 | 1.5 | 1.20 | 18446744073709551615 | +-----------+-----------+----------+-------------+--------------+
Sera retourné comme :
object(stdClass)[915] public 'integer_col' => int 1 public 'double_col' => float 1.55 public 'float_col' => float 1.5 public 'decimal_col' => string '1.20' (length=4) public 'bigint_col' => string '18446744073709551615' (length=20)
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!