从 MySQL 返回整数和数字作为 PHP 类型
尽管将 PDO::ATTR_STRINGIFY_FETCHES 设置为 false,您可能会遇到数字列的问题仍然以字符串形式返回,而不是整数或数字。此行为通常归因于驱动程序实现问题。
mysqlnd 差异
解决此问题的关键在于确保您使用 mysqlnd PHP 驱动程序。查看 php -i 时,pdo_mysql 部分中缺少“mysqlnd”表示正在使用本机驱动程序。
安装 mysqlnd
在 Ubuntu 上,安装php5-mysqlnd 而不是 php5-mysql。为了确保成功过渡,请按照以下步骤操作:
验证 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中文网其他相关文章!