La solution est de s'assurer que vous utilisez le mysqlnd pilote pour php.
Comment savez-vous que vous n'utilisez pas mysqlnd ?
Lors de la visualisation de php -i
, il n'y aura non mention de "mysqlnd". Le pdo_mysql
section aura quelque chose comme ça :
pdo_mysql
PDO Driver for MySQL => enabled Client API version => 5.1.72
Comment l'installer ?
La plupart des guides d'installation pour L/A/M/P suggèrent apt-get install php5-mysql
mais le pilote natif pour MySQL est installé par un package différent :php5-mysqlnd
. J'ai trouvé que cela était disponible avec le ppa:ondrej/php5-oldstable .
Pour passer au nouveau pilote (sur Ubuntu) :
- Supprimez l'ancien pilote :
apt-get remove php5-mysql
- Installez le nouveau pilote :
apt-get install php5-mysqlnd
- Redémarrer apache2 :
service apache2 restart
Comment puis-je vérifier que le pilote est utilisé ?
Maintenant php -i
mentionnera "mysqlnd" explicitement dans le pdo_mysql
rubrique :
pdo_mysql
PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $
Paramètres APD
Assurez-vous que PDO::ATTR_EMULATE_PREPARES
est false
(vérifiez vos valeurs par défaut ou définissez-les) :$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Assurez-vous que PDO::ATTR_STRINGIFY_FETCHES
est false
(vérifiez vos valeurs par défaut ou définissez-les) :$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
Valeurs renvoyées
- Les types à virgule flottante (FLOAT, DOUBLE) sont renvoyés sous forme de flottants PHP.
- Les types entiers (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT †) sont renvoyés sous forme d'entiers PHP.
- Les types à virgule fixe (DECIMAL, NUMERIC) sont renvoyés sous forme de chaînes.
† Les BIGINT avec une valeur supérieure à un entier signé 64 bits (9223372036854775807) seront renvoyés sous forme de chaîne (ou 32 bits sur un système 32 bits)
object(stdClass)[915]
public 'integer_col' => int 1
public 'double_col' => float 1.55
public 'float_col' => float 1.5
public 'decimal_col' => string '1.20' (length=4)
public 'bigint_col' => string '18446744073709551615' (length=20)