使用Zend Framework从DB获取Integer将该值作为字符串返回

Ita*_*vka 11 php mysql zend-framework

当我使用ZF包装器运行sql查询时,所有数值都返回为字符串.我需要更改什么,以便值将以与数据库中相同的数据类型返回?

Bil*_*win 9

Zend_Db在Zend Framework中实现了很多代码.

正如其他人所说,Zend_Db返回字符串而不是本机PHP整数或浮点数的原因是PHP的数据库扩展返回字符串.原因是可能没有本机PHP类型来表示某种数据库类型.

例如,MySQL BIGINT是一个64位有符号整数.默认情况下,PHP int类型限制为32位值,因此如果从数据库中获取数据并将其隐式转换为int某些值,则某些值可能会被截断.还有其他几个类似的案例,float日期和日期等.

对所有数据类型使用字符串表示是保持简单和一致的最佳方法,可以安全地避免数据丢失,并避免编写大量特定于供应商的特殊情况代码来进行数据类型映射.额外的代码也会导致性能下降.

因此,如果您需要将数据库结果映射到本机PHP数据类型的特定情况,则应在应用程序代码中自行实现(例如,在自定义Zend_Db_Table_Row类中).