Я учусь взаимодействовать с базой данных на PHP. Код ниже работает, но я не понимаю, как цикл повторяется через $result
.
<?php
require_once('./login.php');
$conn = new mysqli($hn, $un, $pw, $db);
if ($conn->connect_error) die("DIED: CONNECTION FAILED.");
$query= "SELECT * FROM table1";
$result = $conn->query($query);
if (!$result) die("DIED: QUERY FAILED.");
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$who = $row['WHO'];
$what = $row['WHAT'];
echo <<<_END
WHO: $who<br>
WHAT: $what<br>
_END;
}
$result->close();
$conn->close();
?>
Я понимаю, что хотя элемент $result
доступен, он будет присвоен $row
и обработан в цикле. Но как интерпретатор узнает, что нужно перейти к следующему элементу $result
?
Код даже работает, когда вместо этого используется цикл for, например ...
$row_count = $result->num_rows;
for($j = 0; $j < $row_count; $j++) {
$row = $result -> fetch_array(MYSQLI_ASSOC);
Мой вопрос сводится к следующему: как интерпретатор узнает, что использовать следующий элемент в $result
без необходимости чего-то вроде $result[$j]
?