Maison >développement back-end >tutoriel php >Comment garantir une récupération correcte des types de données entières et numériques à partir de MySQL en PHP ?

Comment garantir une récupération correcte des types de données entières et numériques à partir de MySQL en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-24 15:01:121004parcourir

How to Ensure Correct Integer and Numeric Data Type Retrieval from MySQL in PHP?

Comment récupérer des entiers et des chiffres sous forme de données saisies en PHP à partir de MySQL

Vous pouvez rencontrer une situation dans laquelle une requête MySQL renvoie des types de données de chaîne pour les colonnes entières et numériques en PHP, malgré la définition de l'option "PDO::ATTR_STRINGIFY_FETCHES" sur false. Cet écart provient de problèmes d'implémentation du pilote.

Utilisation du pilote mysqlnd

La solution consiste à s'assurer que le bon pilote est utilisé, à savoir le pilote mysqlnd. Lorsque vous visualisez "php -i", vous devriez voir "mysqlnd" explicitement mentionné dans la section "pdo_mysql". S'il n'y est pas, suivez ces étapes pour l'installer sur Ubuntu :

  1. Supprimez le pilote MySQL natif :

    apt-get remove php5-mysql
  2. Installez mysqlnd pilote :

    apt-get install php5-mysqlnd
  3. Redémarrer Apache2 :

    service apache2 restart

Paramètres PDO

Confirmez que les paramètres PDO sont appropriés :

  • PDO::ATTR_EMULATE_PREPARES doit être faux.
  • PDO::ATTR_STRINGIFY_FETCCHES devrait être false.

Types de valeurs renvoyées

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

Par exemple, considérons l'objet renvoyé suivant :

    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!

Déclaration:
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