Maison > développement back-end > tutoriel php > Comment puis-je m'assurer que les colonnes numériques et entières MySQL sont renvoyées avec le type de données correct en PHP ?

Comment puis-je m'assurer que les colonnes numériques et entières MySQL sont renvoyées avec le type de données correct en PHP ?

Mary-Kate Olsen
Libérer: 2024-12-05 15:15:10
original
353 Les gens l'ont consulté

How Can I Ensure MySQL Numeric and Integer Columns Are Returned as the Correct Data Type in PHP?

Conversion de colonnes numériques et entières MySQL en entiers en PHP

Présentation du problème

Les requêtes PHP renvoient souvent toutes les colonnes sous forme de chaînes, même lorsqu'elles traitent des entiers ou des valeurs numériques dans MySQL. Cela peut devenir problématique lors de la gestion de données avec des exigences de format spécifiques, telles que la sortie JSON consommée par plusieurs services.

Réfuter les idées fausses courantes

Bien que certaines sources affirment que le renvoi de types numériques n'est pas possible, cela est pas tout à fait vrai. Les idées fausses suivantes peuvent être écartées :

  • Casting de type : La conversion manuelle de valeurs dans le code est inefficace et peut introduire des incohérences.
  • Saisie lâche : La saisie lâche de PHP n'est pas une solution fiable car les données peuvent être involontairement converties en strings.
  • Limites du pilote : Le pilote natif MySQL sous Linux ne prend pas entièrement en charge le retour des types numériques. Cependant, il existe une solution de contournement pour garantir une manipulation correcte.

Solution

La clé pour résoudre ce problème est d'utiliser le pilote mysqlnd pour PHP. Contrairement au pilote natif, mysqlnd prend en charge le renvoi de types numériques pour les colonnes entières (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT) et les colonnes à virgule flottante double précision (DOUBLE).

Installation et confirmation de mysqlnd

Pour vérifier si vous utilisez mysqlnd, exécutez php -i. Si la section pdo_mysql mentionne « mysqlnd », le pilote est présent. Sinon, suivez ces étapes pour l'installer :

Ubuntu :

  1. Supprimez l'ancien pilote : apt-get Remove php5-mysql
  2. Installez mysqlnd : apt-get install php5-mysqlnd
  3. Redémarrez Apache : service apache2 restart

Confirmer la présence : Après l'installation, php -i devrait maintenant afficher la version mysqlnd dans la section pdo_mysql.

Paramètres PDO

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

  • PDO::ATTR_EMULATE_PREPARES devrait être faux
  • PDO::ATTR_STRINGIFY_FETCHES devrait être faux

Types de valeurs renvoyées

  • Les colonnes FLOAT et DOUBLE sont renvoyées au format PHP floats.
  • Les colonnes INTEGER sont renvoyées sous forme d'entiers PHP.
  • Les colonnes DECIMAL et NUMERIC sont renvoyées sous forme de chaînes.

Exemple

Avec mysqlnd et paramètres PDO appropriés, vous pouvez désormais interroger les tables MySQL et obtenir des valeurs numériques dans les délais attendus. format :

$result = $pdo->query('SELECT * FROM table');
$row = $result->fetch(PDO::FETCH_OBJ);

echo $row->integer_col; // 1 (integer)
echo $row->double_col; // 1.55 (float)
echo $row->decimal_col; // '1.20' (string)
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