为了账号安全,请及时绑定邮箱和手机立即绑定

PHP mysql的操作,为什么要返回一个字符串数组,不返回真实的数据类型?

PHP mysql的操作,为什么要返回一个字符串数组,不返回真实的数据类型?

莫回无 2019-04-08 11:18:42
http://www.php.net/manual/zh/mysqli-result.fetch-array.php返回值ReturnsanarrayofstringsthatcorrespondstothefetchedroworNULLiftherearenomorerowsinresultset.这里返回的是anarrayofstrings,无论表中数据是整数还是浮点数,都是返回string类型的。为什么要这样设计?这个带来的坏处就是JSON化的时候会都是string类型,导致数据不准确,必须手动去转化数据。
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

你们大概都冤枉PHP了。
大部分编程语言都直接使用了mysql提供的C语言库。(也有很多语言使用自己写的库,比如java,之前的版本适用的C语言库,后来的JDBC版本改成了用Java原生语言)。
在mysql的C语言库头文件中mysql.h定义了mysql_fetch_row函数:
MYSQL_ROWSTDCALLmysql_fetch_row(MYSQL_RES*result);
返回的类型是MYSQL_ROW类型。这个类型依然在mysql.h中定义:
typedefchar**MYSQL_ROW;/*returndataasarrayofstrings*/
后面注释写的很详细了。
由于C语言没有关联数组,所以mysql的C语言库里没有提供mysql_fetch_array函数,应该是PHP在mysql_fetch_row的基础上封装的。
                            
查看完整回答
反对 回复 2019-04-08
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

mysql返回的数据确实默认都是字符串,但是用json_encode函数将number转换后的json数据依然是带引号的,比如自己手动创建的数组$array=array('name'=>'jack','age'=>23);用json_encode($array)得到的是:{'name':'jack','age':'23'},所以前端js将json解析出来以后'23'还是字符串。
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 377 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信