获取 MySQL 查询结果作为其本机数据类型?

2022-08-30 21:04:57

我尝试过使用和获取MySQL查询结果,并且数值作为字符串返回。mysql_fetch_row()mysql_result()

有没有办法获取数据作为其存储在表中的数据类型?

应用程序将查询许多不同的查询,因此我无法以 1 x 1 的方式将值转换为预期的数据类型。


答案 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数据类型。

是的,如果你想使用像 和 这样的运算符,这是不好的,这些运算符对类型敏感...===!==


答案 2

如果使用 mysqli 而不是 PDO,请尝试此操作

$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);

推荐