Подтвердить что ты не робот

Какая разница между функциями mysqli bind_result, store_result и fetch?

Я сталкиваюсь с проблемами, зная, когда и что вызывать после mysqli_stmt_execute
Как вы узнаете, когда позвонить

  • mysqli_stmt_bind_result
  • mysqli_stmt_store_result
  • mysqli_stmt_fetch
4b9b3361

Ответ 1

mysqli_stmt_bind_result() указывает mysqli, какую переменную вы хотите заполнить, когда вы извлекаете строку, но она еще не fetch(). Это необходимо, чтобы позвонить один раз, прежде чем вы вызываете fetch.

mysqli_stmt_store_result() устанавливает необязательное поведение, так что клиент загружает все строки при fetch() первой строке и кэширует весь набор результатов в клиенте (т.е. PHP). Последующие вызовы fetch() будут просто перебирать этот клиентский кеш-результирующий набор. Но установка этого параметра сама по себе также не вызывает fetch(). Эта функция полностью необязательна.

mysqli_stmt_fetch() возвращает следующую строку в результирующем наборе и заставляет ее сохранять в связанной переменной. Вы должны вызвать эту функцию в цикле для каждой строки результирующего набора. То есть, пока выборка не вернет false.

Ответ 2

Процесс запроса базы данных SQL содержит следующие шаги:

  • отправка запроса на сервер SQL
  • SQL-сервер, анализирующий запрос и собирающий запрошенный набор результатов
  • передача найденных данных набора результатов с сервера SQL на PHP
  • поместить данные в переменные PHP так или иначе, чтобы script мог работать с ними

Функции, о которых вы спрашиваете, имеют эти роли в этом процессе:

  • store: перенести все строки сразу из базы данных MySQL в память PHP; как правило, не имеет практического эффекта и в любом случае делается автоматически в какой-то момент
  • bind: связывать переменные, так что, когда вы вызываете fetch(), эти переменные содержат данные результата; скажем PHP, какие переменные он должен поместить результат в
  • fetch: "прочитать" строку из набора результатов и сохранить ее в переменных, которые вы ранее связывали; если данные не находятся в памяти PHP, они будут перенесены с сервера SQL в этот момент.