Понимание fetch_assoc ()

Я пытаюсь понять, как / почему fetch_assoc работает так, как он делает. У меня есть следующий код:

$results = $connectToDb->fetch("SELECT * FROM customer"); $resultsArray = $results->fetch_assoc(); print_r($resultsArray); //print_r 1 while($row = $results->fetch_assoc()){ print_r($row); //print_r 2 } 

Запрос возвращает 3 строки из таблицы. Почему первый print_r возвращает только первую строку запрошенных данных, а второй print_r возвращает все 3? Как помещать fetch_assoc в цикл while, чтобы он выполнял действие более одного раза? Я читал, что fetch_assoc возвращает либо ассоциативный массив, либо NULL, но я изо всех сил пытаюсь понять, как цикл while «говорит» fetch_assoc, чтобы получить следующую строку, если это имеет смысл?

Спасибо.

Давайте попробуем понять ваш код и как он работает:

 $results = $connectToDb->fetch("SELECT * FROM customer"); 

Переменные $results имеют набор строк, возвращаемых запросом. Размер коллекции может быть от 0 до n.

 $resultsArray = $results->fetch_assoc(); 

Эта строка извлекает первый элемент из коллекции. Если коллекция пуста, она вернет NULL .

 while($row = $results->fetch_assoc()){ } 

Он может быть разделен на следующие этапы:

  1. Вычислить $row = $results->fetch_assoc() и вернуть массив с элементами или NULL .
  2. Замените $row = $results->fetch_assoc() в while с полученным значением и получите следующие инструкции: while(array(with elements)) или while(NULL) .
  3. Если это while(array(with elements)) он разрешает условие while в True и позволяет выполнять итерацию.
  4. Если это while(NULL) оно разрешает условие while в False и выходит из цикла.