Maison > base de données > tutoriel mysql > Pourquoi les entiers MySQL sont-ils renvoyés sous forme de chaînes dans PDO et comment puis-je les récupérer sous forme de nombres ?

Pourquoi les entiers MySQL sont-ils renvoyés sous forme de chaînes dans PDO et comment puis-je les récupérer sous forme de nombres ?

Linda Hamilton
Libérer: 2024-12-24 02:32:17
original
510 Les gens l'ont consulté

Why are MySQL integers returned as strings in PDO, and how can I retrieve them as numbers?

Récupération de types numériques à partir de MySQL avec PDO

Problème :

Lors de la récupération de données à partir d'un Base de données MySQL utilisant PDO, les valeurs entières sont renvoyées sous forme de chaînes au lieu de leur type numérique, même lorsque l'attribut de classe PDO PDO::ATTR_STRINGIFY_FETCHES est défini sur false.

Réponse :

Comprendre le problème de type numérique :

C'est courant pour les bases de données pour renvoyer des valeurs numériques sous forme de chaînes. En effet, certains pilotes de base de données, tels que le pilote par défaut de MySQL, traitent toutes les valeurs comme des chaînes.

Prévention de la stringification :

Pour empêcher les valeurs d'être renvoyées sous forme de chaînes, le Le pilote natif MySQL (mysqlnd) doit être utilisé. Ce pilote prend en charge la récupération des types de données natifs, y compris les types numériques.

Configuration de mysqlnd :

Pour utiliser mysqlnd, le paramètre suivant doit être ajouté au tableau des options de connexion PDO :

array(
    PDO::ATTR_EMULATE_PREPARES => false
)
Copier après la connexion

Exemple Code :

$dsn = 'mysql:host=localhost;dbname=my_db';
$user = 'root';
$pass = 'password';

$pdo = new PDO($dsn, $user, $pass, array(
    PDO::ATTR_EMULATE_PREPARES => false
));
Copier après la connexion

En définissant PDO::ATTR_EMULATE_PREPARES sur false, l'émulation des instructions préparées sera désactivée, permettant à mysqlnd de récupérer les valeurs numériques selon leurs types de données corrects.

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