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 récupérer des colonnes entières et numériques en tant que types natifs à partir de MySQL en PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-07 05:25:16227parcourir

How to Retrieve Integer and Numeric Columns as Their Native Types from MySQL in 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 :

  1. Supprimez l'ancien pilote natif MySQL : apt-get Remove php5-mysql
  2. Installez le Pilote mysqlnd : apt-get install php5-mysqlnd
  3. Redémarrer Apache : redémarrage du service apache2

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 :

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

Valeurs renvoyées

Avec le pilote mysqlnd, les types de retour suivants sont utilisés :

  • Types à virgule flottante (FLOAT, DOUBLE) : PHP floats
  • Types entiers (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT) : entiers PHP
  • Types à virgule fixe (DECIMAL, NUMERIC) : chaînes

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!

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