某些基于 PHP 的应用程序可能会遇到以下问题: MySQL 查询的结果以字符串形式返回,而不是以正确的整数或数字数据类型返回。尽管将 PDO 属性 PDO::ATTR_STRINGIFY_FETCHES 设置为 false 以防止字符串转换,但还是会发生这种情况。
需要注意的是,MySQL 驱动程序在确定数字类型是否为数字类型方面发挥着重要作用。以整数或数字形式返回。某些驱动程序(例如 Linux 上的 MySQL 本机驱动程序)不完全支持此功能。
但是,通过第三方存储库可用于 Linux 发行版的 mysqlnd 驱动程序确实支持此功能。支持此功能。确保在 PHP 环境中使用 mysqlnd 驱动程序至关重要。
要在 Ubuntu 上从本机 MySQL 驱动程序切换到 mysqlnd,请按照以下步骤操作:
安装mysqlnd后,通过运行php确认它正在使用 -我。在 pdo_mysql 部分中查找以下条目:
PDO Driver for MySQL => enabled Client API version => mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $
确保正确设置以下 PDO 属性:
配置这些设置后,MySQL 将返回数字类型为如下:
例如,以下 PHP 代码将输出预期的数据类型:
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $stmt = $pdo->prepare("SELECT * FROM table"); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_OBJ); echo "<pre class="brush:php;toolbar:false">"; print_r($row); echo "";
输出:
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)
以上是为什么 MySQL 数字列在 PHP 中以字符串形式返回?如何确保它们以整数或浮点数形式返回?的详细内容。更多信息请关注PHP中文网其他相关文章!