В чем разница междуmysqli::store_result()
иmysqli::use_result()
?
Документация на PHP.net кажется очень расплывчатой в отношении разницы между ними. Страницаmysqli::use_result()
-не предлагает примеров кода-и дает ссылку на страницуmysqli::multi_query()
-для их поиска. На этой странице приведен следующий код-образец (полный код см. на странице):
/* 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()
-используется точно тот же код-образец, за одним исключением:
/* store first result set */
if ($result = $mysqli->use_result()) {
Ага... store_result
стало use_result
. Обратите внимание, что даже в комментарии выше все еще говорится «магазин».
Увидев примеры кода, я подумал; «Хорошо, значит, это псевдоним». Но ждать! В документации приведены следующие описания::
Они кажутся двумя разными вещами и вовсе не являются псевдонимами. Присмотревшись, я обнаружил, что было еще одно исключение в коде-образец страницыmysqli::use_result()
-:$result->free();
стал $result->close();
. Однако мои надежды на выяснение истины вскоре рухнули, когда я обнаружил, что на той же странице во втором примере кода (использовался процедурный эквивалент ), mysqli_free_result($result);
, а не ожидаемый mysqli_close_result($result);
.