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

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

拉莫斯之舞

你们大概都冤枉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的基础上封装的。

蛊毒传说

mysql返回的数据确实默认都是字符串,但是用json_encode函数将number转换后的json数据依然是带引号的,比如自己手动创建的数组$array=array('name'=>'jack','age'=>23);用json_encode($array)得到的是:{'name':'jack','age':'23'},所以前端js将json解析出来以后'23'还是字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript