如何确保 PHP 中的 MySQL 正确返回整数和数字数据类型?

Susan Sarandon
发布: 2024-11-27 08:23:13
原创
416 人浏览过

How to Ensure Integer and Numeric Data Types Are Returned Correctly from MySQL in PHP?

如何从 MySQL 中检索 PHP 中的整数和数字数据类型作为整数和数字

使用 PHP 查询 MySQL 时,经常会遇到整数和数字列作为字符串类型返回的问题。尽管将“PDO::ATTR_STRINGIFY_FETCHES”配置为 false,此问题仍然存在。

解决方案

  1. 检查 mysqlnd 驱动程序:
    确保您使用 mysqlnd 驱动程序而不是本机 MySQL 驱动程序。在 PHP 的“php -i”输出中,查找 pdo_mysql 部分。缺少“mysqlnd”表示正在使用本机驱动程序。
  2. 安装 mysqlnd 驱动程序(Ubuntu):
    使用“apt-get remove php5-”删除本机驱动程序mysql”并使用“apt-get install php5-mysqlnd”安装 mysqlnd 驱动程序。
  3. 确认 mysqlnd用法:
    重新启动 Apache 后,检查 PHP 的“php -i”输出的 pdo_mysql 部分中是否提到“mysqlnd”。
  4. 配置 PDO:
    确保以下 PDO 属性是设置:

    • PDO::ATTR_EMULATE_PREPARES: false
    • PDO::ATTR_STRINGIFY_FETCHES: false

已返回类型

使用 mysqlnd 驱动程序时,整数和数字列值将作为以下 PHP 数据类型返回:

  • 浮点类型(FLOAT、DOUBLE):浮点数
  • 整数类型(INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、 BIGINT):整数
  • 定点类型(DECIMAL、NUMERIC):字符串(可能是特殊的案例)

示例

$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$stmt = $pdo->prepare('SELECT * FROM table');
$stmt->execute();

$result = $stmt->fetch(PDO::FETCH_OBJ);

echo $result->integer_col; // int
echo $result->double_col; // float
echo $result->decimal_col; // string
echo $result->bigint_col; // string (since value exceeds 64-bit signed int)
登录后复制

输出:

1
1.55
1.20
18446744073709551615
登录后复制

以上是如何确保 PHP 中的 MySQL 正确返回整数和数字数据类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板