Maison > base de données > tutoriel mysql > Comment récupérer correctement les types de données entiers et numériques à partir de MySQL à l'aide de PHP ?

Comment récupérer correctement les types de données entiers et numériques à partir de MySQL à l'aide de PHP ?

Patricia Arquette
Libérer: 2024-12-08 21:02:14
original
793 Les gens l'ont consulté

How to Properly Retrieve Integer and Numeric Data Types from MySQL Using PHP?

Comment récupérer correctement les types de données entiers et numériques à partir de MySQL à l'aide de PHP

Lors de l'interrogation d'une base de données MySQL à l'aide de PHP, il est crucial de s'assurer que Les types de données entiers et numériques sont renvoyés tels quels, plutôt que sous forme de chaînes. Ceci est essentiel pour l'intégrité des données et la compatibilité avec d'autres services.

Malheureusement, par défaut, le pilote natif PHP-MySQL convertit tous les résultats de requête en chaînes. Cette question a fait l'objet de nombreux débats, certains affirmant qu'il s'agit d'une limitation de mise en œuvre et d'autres affirmant que c'est incorrect. Cependant, le facteur clé à prendre en compte est le pilote utilisé.

La solution : utiliser le pilote MySQLnd

Pour résoudre ce problème, il est nécessaire de passer du pilote natif Pilote MySQL vers le pilote mysqlnd. Le pilote mysqlnd prend en charge le renvoi correct des types entiers et numériques.

Comment installer et rechercher mysqlnd

Sur Ubuntu, vous pouvez installer le pilote mysqlnd à l'aide des commandes suivantes :

sudo apt-get remove php5-mysql
sudo apt-get install php5-mysqlnd
sudo service apache2 restart
Copier après la connexion

Pour vérifier que mysqlnd est utilisé, vérifiez la sortie de php -i. La section pdo_mysql devrait maintenant inclure une référence à mysqlnd.

Paramètres PDO

De plus, assurez-vous que les paramètres PDO suivants sont correctement configurés :

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
Copier après la connexion

Valeurs renvoyées

Une fois le pilote mysqlnd lancé en cours d'utilisation et que les paramètres PDO appropriés sont appliqués, les résultats de la requête seront renvoyés selon les règles suivantes :

  • Les types à virgule flottante (FLOAT, DOUBLE) seront renvoyés sous forme de flottants PHP.
  • Les types entiers (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT) seront renvoyés en PHP entiers.
  • Les types à virgule fixe (DECIMAL, NUMERIC) seront renvoyés sous forme de chaînes PHP.

Exemple

L'exemple suivant illustre le comportement correct de la récupération de données entières et numériques :

$pdo = new PDO(...);
$stmt = $pdo->prepare('SELECT * FROM table');
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_OBJ);

var_dump($result);
Copier après la connexion

Cela afficherait un objet avec les propriétés suivantes :

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)
Copier après la connexion

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