mysqli_store_result()vs. mysqli_use_result()

Вопрос

В чем разница между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_store_result — передает набор результатов из последнего запроса
  • mysqli_use_result — инициирует набор результатов retrieval

Они кажутся двумя разными вещами и вовсе не являются псевдонимами. Присмотревшись, я обнаружил, что было еще одно исключение в коде-образец страницыmysqli::use_result()-:$result->free(); стал $result->close();. Однако мои надежды на выяснение истины вскоре рухнули, когда я обнаружил, что на той же странице во втором примере кода (использовался процедурный эквивалент ), mysqli_free_result($result);, а не ожидаемый mysqli_close_result($result);.

33
задан Avaq 14 August 2013 в 13:39
поделиться