Récupération de types de données numériques à partir de MySQL à l'aide de PDO
Lors de l'utilisation de PDO et MySQL, vous pouvez rencontrer des cas où les valeurs numériques extraites de la base de données sont renvoyé sous forme de chaînes au lieu de types de données numériques. Cette disparité peut survenir en raison du comportement par défaut de l'extension PHP Database Objects (PDO).
Pourquoi des chaînes au lieu de chiffres ?
Malheureusement, il est relativement courant de recevoir des chaînes au lieu de chiffres lors de l'interrogation d'une base de données. Cela se produit car l'extension PDO convertit généralement les valeurs numériques de la base de données en chaînes pour garantir la compatibilité avec tous les pilotes de base de données pris en charge.
Désactivation de la conversion de chaîne
Pour empêcher PDO de chaîner valeurs numériques, vous pouvez modifier l'attribut PDO PDO::ATTR_EMULATE_PREPARES. En définissant cet attribut sur false, vous pouvez désactiver l'émulation des instructions préparées et autoriser MySQL à renvoyer des types de données natifs, y compris des types numériques.
$dsn = 'mysql:dbname=database;host=localhost'; $pdo = new PDO($dsn, $user, $pass, array( PDO::ATTR_EMULATE_PREPARES => false ));
PDO::ATTR_STRINGIFY_FETCHES
L'attribut PDO::ATTR_STRINGIFY_FETCHES n'est pas applicable au pilote MySQL PDO. Cet attribut est destiné à d'autres pilotes de base de données qui prennent en charge le renvoi de chaînes au lieu des types de données natifs.
Par conséquent, en désactivant l'émulation des instructions préparées de PDO, vous pouvez garantir que les valeurs numériques sont renvoyées en tant que types de données natifs, empêchant ainsi la stringification et permettant vous de travailler correctement avec les données.
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!