【问题标题】:PHP - Make MySQL return integersPHP - 使 MySQL 返回整数
【发布时间】:2016-06-25 08:38:37
【问题描述】:

我正在使用 codeigniter,当从 MySQL DB 中选择一个整数时,我得到一个字符串,比如“1”,我希望它返回 1。

以下是使用 PDO 解决此问题的方法: How to get numeric types from MySQL using PDO?

我不知道如何将它应用到我的情况,使用 Codeigniter 3 和 PHP 7(它使用 mysqli 驱动程序)

PHP 类型转换对我来说太慢了,这是一篇关于它的帖子(所以请不要建议这样做):PHP - Recursive in place replacing of strings to numbers takes too long

【问题讨论】:

  • 你如何使用这个整数?为什么类型转换太慢了?
  • @Qirel 我正在使用 json_enocde 回复这些数据。为什么慢?在 200MB 上,需要这么长的时间,查询和下载大约需要 5 秒。 (这么长,30秒后不会停止)
  • intval() php.net/manual/en/function.intval.php,类型转换很慢?奔腾2 CPU?我有每秒运行 50k 个查询的生产服务器,我怀疑强制转换会对性能产生很大影响。
  • @ArtisiticPhoenix 这是一个与我所拥有的数据相比的小数据测试:sandbox.onlinephpfunctions.com/code/…,顺便说一句,intval 比 (int) 慢,比 0+"1" 慢
  • @Amit - 所以你计划用这个函数做 320k 次迭代。即使这样,它也是十分之二秒,远低于网络流量所需的时间。

标签: php mysql codeigniter mysqli


【解决方案1】:

这取决于 mysql 客户端驱动程序。

  • 原始 mysql 客户端驱动程序以字符串形式返回所有数据。
  • “新”mysqlnd (native driver) 尽可能返回强类型数据。

此驱动程序自 PHP 5.4 以来一直是默认驱动程序,因此您应该已经在使用它了。

您可以使用 phpinfo() 确定您正在使用的驱动程序。 查找 MySQL 部分,它会显示如下内容:

Client API version  mysqlnd 5.0.11-dev 

【讨论】:

  • 我刚刚安装了最新的 xampp 版本。在哪里可以找到驱动程序的下载地址?
  • 根据 mysqlnd 页面,PHP 5.4 默认使用 mysqlnd,所以你应该已经在使用它了。请参阅更新的答案以了解如何判断。也许 CodeIgniter 正在做一些事情来转换回文本。
猜你喜欢
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 2014-02-07
  • 2019-04-25
  • 2013-09-06
  • 2011-07-16
  • 2013-04-11
相关资源
最近更新 更多