(PHP 5, PHP 7, PHP 8)
mysqli_result::fetch_assoc -- mysqli_fetch_assoc — Выбирает следующую строку из набора результатов и помещает её в ассоциативный массив
Объектно-ориентированный стиль
Процедурный стиль
Выбирает одну строку данных из набора результатов и возвращает её в виде ассоциативного массива.
Каждый последующий вызов этой функции будет возвращать следующую строку в наборе результатов
или null
, если строк больше нет.
Если у двух и более столбцов в наборе результатов одинаковое имя, последний столбец будет иметь приоритет и перезапишет любые предыдущие данные. Для доступа к нескольким столбцам с одинаковым именем можно использовать функцию mysqli_fetch_row() для выборки массива с числовым индексом или в списке выбора SQL-запроса можно использовать псевдонимы, чтобы задать столбцам разные имена.
Замечание: Имена полей, возвращаемые этой функцией являются зависимыми от регистра.
Замечание: Эта функция устанавливает NULL-поля в значение
null
PHP.
result
Только для процедурного стиля: объект mysqli_result, полученный с помощью mysqli_query(), mysqli_store_result(), mysqli_use_result() или mysqli_stmt_get_result().
Возвращает ассоциативный массив, представляющий выбранную строку,
где каждое свойство представляет имя столбца набора результатов,
null
, если в наборе результатов больше нет строк или false
в случае возникновения ошибки.
Пример #1 Пример использования mysqli_result::fetch_assoc()
Объектно-ориентированный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";
$result = $mysqli->query($query);
/* извлечение ассоциативного массива */
while ($row = $result->fetch_assoc()) {
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
Процедурный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";
$result = mysqli_query($mysqli, $query);
/* извлечение ассоциативного массива */
while ($row = mysqli_fetch_assoc($result)) {
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
Результатом выполнения данных примеров будет что-то подобное:
Pueblo (USA) Arvada (USA) Cape Coral (USA) Green Bay (USA) Santa Clara (USA)
Пример #2 Сравнение использования mysqli_result iterator и mysqli_result::fetch_assoc()
mysqli_result можно повторить с помощью foreach. Результирующий набор всегда будет повторяться с первой строки, независимо от текущей позиции.
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$query = 'SELECT Name, CountryCode FROM City ORDER BY ID DESC';
// Используем итераторы
$result = $mysqli->query($query);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
echo "\n==================\n";
// Не используем итераторы
$result = $mysqli->query($query);
while ($row = $result->fetch_assoc()) {
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
Результатом выполнения данного примера будет что-то подобное:
Pueblo (USA) Arvada (USA) Cape Coral (USA) Green Bay (USA) Santa Clara (USA) ================== Pueblo (USA) Arvada (USA) Cape Coral (USA) Green Bay (USA) Santa Clara (USA)