Какая разница между функциями mysqli bind_result, store_result и fetch?
Я сталкиваюсь с проблемами, зная, когда и что вызывать после mysqli_stmt_execute
Как вы узнаете, когда позвонить
mysqli_stmt_bind_result
mysqli_stmt_store_result
mysqli_stmt_fetch
Ответ 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 в этот момент.