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 )
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 ));
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!