PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别

前端之家收集整理的这篇文章主要介绍了PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

虽然nosql变得流行,但是我感觉sql还是主流 今天在翻PHP manul的时候,发现MysqLi 的查询可以传递一个有意思的参数

代码如下:
@H_403_3@sql,$sql,($method ? MysqLI_USE_RESULT : MysqLI_STORE_RESULT));

PHP manul上面对这两个参数是这样解释的。

代码如下:
MysqLI_USE_RESULT or MysqLI_STORE_RESULT depending on the desired behavior. By default,MysqLI_STORE_RESULT is used.

如果什么也不传,那就默认为MysqLI_STORE_RESULT。

PHPmanul上面有人说了这样一句话If we have to retrieve large amount of data we use MysqLI_USE_RESULT

其实这两个参数的区别还是很大的。

(1)区别在于从服务器上检索结果集的行。 (2)MysqLI_USE_RESULT 启动查询,但实际上并未获取任何行 (3)MysqLI_STORE_RESULT 立即检索所有的行 (4)MysqLI_STORE_RESULT 从服务器上检索结果集时,就提取了行,并为之分配内存,存储到客户机中,随后调用 MysqLi_fetch_array()就再也不会返回错误,因为它仅仅是把行脱离了已经保留结果集的数据结构,MysqLi_fetch_array()返回 NULL始终表示已经到达结果集的末端。 (5)MysqLI_USE_RESULT 本身不检索任何行,而只是启动一个逐行的检索,就是说必须对每行调用 MysqLi_fetch_array()来自己完成。既然如此,虽然正常情况下,MysqLi_fetch_array()返回NULL仍然表示此时已到达结果集的末端,但也可能表示在与服务器通信时发生错误

总结

MysqLI_USE_RESULT相比,MysqLI_STORE_RESULT 有着较高的内存和处理需求,因为是在客户机上维护整个结果集,所以内存分配和创建数据结构的耗费是非常巨大的,如果想一次检索多个行,可用 MysqLI_USE_RESULT。

MysqLI_USE_RESULT有着较低的内存需求,因为只需给每次处理的单行分配足够的空间。这样速度就较快,因为不必为结果集建立复杂的数据结构。另一方面,MysqLI_USE_RESULT把较大的负载加到了服务器上,它必须保留结果集中的行,直到客户机看起来适合检索所有的行。

猜你在找的PHP相关文章