首页 >数据库 >mysql教程 >如何在 PHP 中从 MySQL 检索整数和数字列作为其本机类型?

如何在 PHP 中从 MySQL 检索整数和数字列作为其本机类型?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-07 05:25:16230浏览

How to Retrieve Integer and Numeric Columns as Their Native Types from MySQL in PHP?

如何在 PHP 中将 MySQL 中的整数和数字列作为整数和数字返回?

在 PHP 中使用 MySQL 数据库时,确保正确检索和表示整数和数字列至关重要。 PHP 中的 PDO 扩展提供了一种方法来执行此操作,但如果未使用 MySQL 本机驱动程序,则可能会出现问题。

为什么整数列以字符串形式返回

MySQL 本机驱动程序不支持以整数和数字形式返回数值。这意味着,默认情况下,所有列都作为字符串检索。即使 PDO 标志 PDO::ATTR_STRINGIFY_FETCHES 设置为 false,驱动程序的行为也不会改变。

如何修复它

解决方案是切换到 mysqlnd PHP 驱动程序。该驱动程序支持以原生 PHP 类型返回整数和数值。

安装

要在 Ubuntu 上安装 mysqlnd 驱动程序,您可以使用以下步骤:

  1. 删除旧的 MySQL 本机驱动程序: apt-get remove php5-mysql
  2. 安装 mysqlnd 驱动:apt-get install php5-mysqlnd
  3. 重启 Apache:service apache2 restart

验证

要验证是否正在使用 mysqlnd 驱动程序,请运行 php -i。输出现在应在 pdo_mysql 部分中包含“mysqlnd”。

PDO 设置

确保正确设置以下 PDO 设置:

  • PDO::ATTR_EMULATE_PREPARES 应该是false
  • PDO::ATTR_STRINGIFY_FETCHES 应该为 false

返回值

使用 mysqlnd 驱动程序,使用以下返回类型:

  • 浮点类型(FLOAT, DOUBLE):PHP 浮点数
  • 整数类型(INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT):PHP 整数
  • 定点类型(DECIMAL、NUMERIC): strings

示例

切换到 mysqlnd 驱动后,您将能够正确检索整数和数值:

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

$result = $pdo->query('SELECT * FROM table');
$row = $result->fetch(PDO::FETCH_OBJ);

echo $row->integer_col; // 1 (int)
echo $row->double_col; // 1.55 (float)
echo $row->decimal_col; // '1.20' (string)
echo $row->bigint_col; // '18446744073709551615' (string)

以上是如何在 PHP 中从 MySQL 检索整数和数字列作为其本机类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn