我尝试使用mysql_fetch_row()和提取MySQL查询结果,mysql_result()并且将数值作为字符串返回。
mysql_fetch_row()
mysql_result()
有什么方法可以将数据存储为表中的数据类型吗?
该应用程序将查询许多不同的查询,因此我将无法基于1乘1将值强制转换为预期的数据类型。
我不认为可以在PHP 5.2 中以其本机数据类型 (即字符串的其他任何形式) 获取数据…
如果我没记错的话,在PHP 5.3中,当您使用新的 (在PHP > = 5.3中是新的) mysqlnd (MySQL本机驱动程序) 驱动程序时,就有可能。
在深入浏览书签后,我发现了有关mysqlnd的文章: PDO_MYSQLND: The new features of PDO_MYSQL in PHP 5.3
PDO_MYSQLND: The new features of PDO_MYSQL in PHP 5.3
它说(引用):
对PDO使用mysqlnd的优点 当使用服务器端的预处理语句时,mysqlnd返回本机数据类型,例如,INT列作为整数变量而不是字符串返回。这意味着内部的数据转换较少。
对PDO使用mysqlnd的优点
当使用服务器端的预处理语句时,mysqlnd返回本机数据类型,例如,INT列作为整数变量而不是字符串返回。这意味着内部的数据转换较少。
但这仅是PHP 5.3(前提是您的PHP 5.3版本是使用mysqlnd编译的( 而不是旧的libmysql) ),并且似乎仅适用于准备好的语句:-(
我猜这对您没有帮助。
这是另一个关于mysqlnd的新功能的内容,它不仅针对准备好的语句谈论此内容:PHP:mysqlnd可以节省新的网络流量,CPU和内存。
但是,不确定是否已将其合并到正式的mysqlnd驱动程序中-最好的方法是尝试;但是无论如何,它仍然只能是PHP> = 5.3 …
另一种解决方案是在PHP方面具有某种映射系统 (例如ORM), 以将来自DB的结果转换为PHP数据类型…
是的,如果要使用类型敏感的运算符(例如)===和,这是很不好的!==。
===
!==