获取 MySQL 查询结果作为其本机数据类型?
我尝试过使用和获取MySQL查询结果,并且数值作为字符串返回。mysql_fetch_row()
mysql_result()
有没有办法获取数据作为其存储在表中的数据类型?
应用程序将查询许多不同的查询,因此我无法以 1 x 1 的方式将值转换为预期的数据类型。
我尝试过使用和获取MySQL查询结果,并且数值作为字符串返回。mysql_fetch_row()
mysql_result()
有没有办法获取数据作为其存储在表中的数据类型?
应用程序将查询许多不同的查询,因此我无法以 1 x 1 的方式将值转换为预期的数据类型。
我不认为在PHP 5.2中可以在他们的原生数据类型中获取数据(即字符串的任何其他内容)......
如果我没记错的话,在 PHP 5.3 中,当您使用新的(PHP >= 5.3 中的新)mysqlnd(MySQL Native Driver)驱动程序时,这是可能的。
经过进一步的挖掘我的书签,我发现了这篇文章关于mysqlnd:PDO_MYSQLND:PHP 5.3中PDO_MYSQL的新功能
它说这个(引用):
将 mysqlnd 用于 PDO 的优势
mysqlnd 在使用服务器端预准备语句时返回本机数据类型,例如,INT 列作为整数变量而不是字符串返回。这意味着内部数据转换更少。
但这仅仅是 PHP 5.3(前提是您的 PHP 5.3 版本是使用 mysqlnd 编译的(而不是旧的 libmysql)),并且似乎只适用于预准备语句:-(
这不太有帮助,在你的情况下,我想...
这是另一个,仍然是关于mysqlnd的新功能,它不仅为预准备语句讨论了这一点:PHP:mysqlnd的新网络流量,CPU和内存节省。
不确定这是否已合并到官方的mysqlnd驱动程序中,但是 - 最好的方法是尝试;但它仍然是PHP> = 5.3,无论如何...
另一种解决方案是在PHP端使用某种映射系统(如ORM)将来自DB的结果转换为PHP数据类型。
是的,如果你想使用像 和 这样的运算符,这是不好的,这些运算符对类型敏感...===
!==
如果使用 mysqli 而不是 PDO,请尝试此操作
$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);