使用php的CI框架的时候,发现在数据库中是int型的数据,返回的时候全变成了string了。对于弱类型的语言来说,这个没多大关系,但是,如果是做APP接口,在进行JSON转对象的时候,可能要求score这种字段是int类型,这个时候就不行了。其实这不是CI框架的问题,PHP与mysql的通讯全都用string。
方法一:
从PHP环境层面解决,在 php 扩展中启用 mysqlnd 驱动程序。
php应用mysql扩展的话,不能获取数据库中的数据类型,而当用mysqlnd的时候,是可以获取的。
在php7以后,mysql扩展已经摒弃了,建议用mysqli,而mysqli是可以获取数据库中的数据类型的,但是默认并没有开启。需要设置option参数 MYSQLI_OPT_INT_AND_FLOAT_NATIVE
为 true
,也就是下面的方法二。
方法二:
在 Codeigniter 驱动程序中设置 mysqli 选项。 下面的方法适用于使用 mysqli 作为数据库驱动程序的用户(可能不适用于所有系统)。
Open mysqli_driver.php file from system > database > drivers > mysqli_driver.php
Add below line to the code
1 | public function db_connect($persistent = FALSE) |
After the code change, you get response like below
1 | array (size=16) |