gpt4 book ai didi

php - mysqli_store_result() 与 mysqli_use_result()

转载 作者:IT王子 更新时间:2023-10-29 01:05:53 27 4
gpt4 key购买 nike

问题

mysqli::store_result() 之间有什么区别?和 mysqli::use_result()

故事

模糊的文档

PHP.net 上的文档似乎对两者之间的区别非常模糊。 mysqli::use_result() -page 不提供任何代码示例,并将您链接到 mysqli::multi_query() -page 来寻找它们。在该页面中,给出了以下代码示例(请参阅页面以获取完整代码):

/* store first result set */
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_row()) {
printf("%s\n", $row[0]);
}
$result->free();
}
/* print divider */
if ($mysqli->more_results()) {
printf("-----------------\n");
}

mysqli::store_result() -page 使用完全相同的代码示例,但有一个异常(exception):

/* store first result set */
if ($result = $mysqli->use_result()) {

是的... store_result 变成了 use_result。请注意,即使上面的评论仍然在说“商店”。

更加困惑

看过代码示例后,我想; “好吧,所以这是一个别名”。可是等等!该文档给出了以下描述:

它们看起来像是两个不同的东西,根本不像别名。仔细观察,我发现 mysqli::use_result() 的代码示例中还有另一个异常。 -page: $result->free(); 变成了 $result->close();。然而,我发现真相的希望很快就破灭了,当我发现在第二个代码示例(程序等效)的同一页上时,使用了 mysqli_free_result($result);,而不是预期的 mysqli_close_result($result);

最佳答案

mysqli::store_result() 将从 MySQL 服务器获取整个结果集,而 mysqli::use_result() 将逐行获取。

您链接到的 mysqli::use_result 文档中也提到了这一点:

The mysqli_use_result() function does not transfer the entire result set from the database and hence cannot be used functions such as mysqli_data_seek() to move to a particular row within the set. To use this functionality, the result set must be stored using mysqli_store_result(). One should not use mysqli_use_result() if a lot of processing on the client side is performed, since this will tie up the server and prevent other threads from updating any tables from which the data is being fetched.

您通常总是可以使用 mysqli::store_result() 除非您有充分的理由不立即从服务器读取所有行。

关于php - mysqli_store_result() 与 mysqli_use_result(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9876730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com