为什么 MySQL 数字列在 PHP 中以字符串形式返回?如何确保它们以整数或浮点数形式返回?
如何从 MySQL 返回整数和数字列作为 PHP 整数和数字
问题陈述
某些基于 PHP 的应用程序可能会遇到以下问题: MySQL 查询的结果以字符串形式返回,而不是以正确的整数或数字数据类型返回。尽管将 PDO 属性 PDO::ATTR_STRINGIFY_FETCHES 设置为 false 以防止字符串转换,但还是会发生这种情况。
驱动程序注意事项
需要注意的是,MySQL 驱动程序在确定数字类型是否为数字类型方面发挥着重要作用。以整数或数字形式返回。某些驱动程序(例如 Linux 上的 MySQL 本机驱动程序)不完全支持此功能。
但是,通过第三方存储库可用于 Linux 发行版的 mysqlnd 驱动程序确实支持此功能。支持此功能。确保在 PHP 环境中使用 mysqlnd 驱动程序至关重要。
在 Ubuntu 上安装 mysqlnd 驱动程序
要在 Ubuntu 上从本机 MySQL 驱动程序切换到 mysqlnd,请按照以下步骤操作:
- 卸载本机驱动程序:apt-get remove php5-mysql
- 安装 mysqlnd 驱动程序: apt-get install php5-mysqlnd
- 重新启动 Apache:service apache2 restart
验证驱动程序使用
安装mysqlnd后,通过运行php确认它正在使用 -我。在 pdo_mysql 部分中查找以下条目:
PDO Driver for MySQL => enabled Client API version => mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $
登录后复制
PDO 设置
确保正确设置以下 PDO 属性:
- PDO::ATTR_STRINGIFY_FETCHES : 设置为 false 以防止字符串
- PDO::ATTR_EMULATE_PREPARES:设置为 false 以提高性能。
返回值类型
配置这些设置后,MySQL 将返回数字类型为如下:
- 浮点类型(FLOAT、 DOUBLE)作为 PHP 浮点数
- 整数类型(INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT)作为 PHP 整数
- 定点类型(DECIMAL、NUMERIC)作为字符串(带有值的 bigint)超过 64 位也可能返回为strings)
例如,以下 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中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)