我尝试使用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数据类型......
是的,如果你想使用像===
和!==
这样的类型敏感的运算符,这是不好的...
如果使用mysqli而不是PDO,请尝试此操作
$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
Run Code Online (Sandbox Code Playgroud)