MySQL から PHP の型として整数と数値を返す
PDO::ATTR_STRINGIFY_FETCHES を false に設定しているにもかかわらず、数値列が整数や数値ではなく文字列として返されます。この動作は、ドライバーの実装の問題に起因することがよくあります。
mysqlnd の違い
この問題を解決する鍵は、mysqlnd を確実に利用していることです。 PHP 用の ドライバー。 php -i を表示すると、pdo_mysql セクションに「mysqlnd」がない場合、ネイティブ ドライバーが代わりに使用されていることを示します。
mysqlnd のインストール
Ubuntu では、インストールします。 php5-mysql の代わりに php5-mysqlnd。移行を確実に成功させるには、次の手順に従ってください:
mysqlnd の検証
php5-mysqlnd をインストールすると、php -i は pdo_mysql セクションで「mysqlnd」を明示的に言及する必要があります。
PDO設定
データが適切に処理されるように次の PDO 属性を設定します:
戻り値
正しいドライバーと設定を使用すると、数値列が適切な PHP タイプとして返されます:
たとえば、次のデータ:
+-----------+-----------+----------+-------------+--------------+ | integer_col | double_col | float_col | decimal_col | bigint_col | +-----------+-----------+----------+-------------+--------------+ | 1 | 1.55 | 1.5 | 1.20 | 18446744073709551615 | +-----------+-----------+----------+-------------+--------------+
は次のように返されます:
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)
以上がPHP MySQL の数値列の結果が整数や浮動小数点数ではなく文字列になる場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。