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

WBOY
풀어 주다: 2016-06-06 20:46:47
원래의
1131명이 탐색했습니다.

http://www.php.net/manual/zh/mysqli-result.fetch-array.php

返回值
Returns an array of strings that corresponds to the fetched row or NULL if there are no more rows in resultset.

这里返回的是an array of strings,无论表中数据是整数还是浮点数,都是返回string类型的。为什么要这样设计?

这个带来的坏处就是JSON化的时候会都是string类型,导致数据不准确,必须手动去转化数据。

回复内容:

http://www.php.net/manual/zh/mysqli-result.fetch-array.php

返回值
Returns an array of strings that corresponds to the fetched row or NULL if there are no more rows in resultset.

这里返回的是an array of strings,无论表中数据是整数还是浮点数,都是返回string类型的。为什么要这样设计?

这个带来的坏处就是JSON化的时候会都是string类型,导致数据不准确,必须手动去转化数据。

你们大概都冤枉 PHP 了。

大部分编程语言都直接使用了 mysql 提供的 C 语言库。(也有很多语言使用自己写的库,比如 java,之前的版本适用的 C 语言库,后来的 JDBC 版本改成了用 Java 原生语言)。

在 mysql 的 C 语言库头文件中 mysql.h 定义了 mysql_fetch_row 函数:

<code>MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
</code>
로그인 후 복사

返回的类型是 MYSQL_ROW 类型。这个类型依然在 mysql.h 中定义:

<code>typedef char **MYSQL_ROW;   /* return data as array of strings */
</code>
로그인 후 복사

后面注释写的很详细了。


由于 C 语言没有关联数组,所以 mysql 的 C 语言库里没有提供 mysql_fetch_array函数,应该是 PHP 在 mysql_fetch_row 的基础上封装的。

尤其在给APP写api的时候,这个问题比较麻烦,请问有什么方法可以解决?

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿