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

18 php mysql types resultset

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

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

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

Pas*_*TIN 18

我不认为在PHP 5.2中可以使用其本机数据类型(即其他任何字符串)获取数据...

在PHP 5.3中,如果我没记错的话,当你使用新的(在PHP> = 5.3中为新的) mysqlnd (MySQL Native Driver)驱动程序时,它变得可能.

经过我的书签之后,我发现了一篇关于mysqlnd的文章: PDO_MYSQLND: The new features of PDO_MYSQL in PHP 5.3

它说(引用):

使用mysqlnd进行PDO的优点

使用服务器端预准备语句时,mysqlnd返回本机数据类型,例如,INT列作为整数变量而不是字符串返回.这意味着内部数据转换更少.

但这只是PHP 5.3(假设您的PHP 5.3版本是使用mysqlnd编译的(而不是旧的libmysql)),并且似乎只是预处理语句的情况:-(

在你的情况下,哪个不太有帮助,我猜......


还有另外一个,仍然是关于mysqlnd的新功能,它不仅讨论了这个准备语句:PHP:新的网络流量,CPU和内存节省与mysqlnd.

不确定这已经合并到官方的mysqlnd驱动程序,但最好的方法是尝试; 但它仍然只是PHP> = 5.3,无论如何......


另一个解决方案是在PHP端使用某种映射系统(如ORM)将来自DB的结果转换为PHP数据类型......

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


ale*_*exl 7

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

$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
Run Code Online (Sandbox Code Playgroud)