Перейти к содержимому

fetch_array

В этой статье мы рассмотрим функцию mysqli_fetch_array() в PHP, которая используется для получения строки из набора результатов MySQLi в виде ассоциативного, числового или комбинированного массива. Мы предоставим обзор функции, её параметров и практические примеры.

Введение в функцию mysqli_fetch_array()

Функция mysqli_fetch_array() — это встроенная функция PHP, которая извлекает строку из набора результатов MySQLi. Она возвращает строку в виде ассоциативного массива, числового массива или обоих вариантов одновременно в зависимости от параметра result_type. Это особенно полезно, когда необходимо перебирать результаты запроса и обращаться к столбцам по имени или индексу.

Как использовать функцию mysqli_fetch_array()

Для использования mysqli_fetch_array() требуется действительный набор результатов MySQLi. Обычно она применяется внутри цикла while для перебора всех строк. Ниже приведён полный пример с базовой обработкой ошибок:

Базовое использование с циклом while

php
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);
if (!$result) {
    die("Query failed: " . mysqli_error($mysqli));
}

// Fetch rows as an associative array
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    echo $row['column1'] . " - " . $row['column2'] . "<br>";
}

mysqli_close($mysqli);
?>

В этом примере мы устанавливаем соединение и выполняем запрос. Мы проверяем наличие ошибок соединения и запроса, чтобы предотвратить тихие сбои. Цикл while многократно вызывает mysqli_fetch_array(), возвращая false, когда больше нет строк. Константа MYSQLI_ASSOC гарантирует обращение к столбцам по имени.

Режимы выборки и расширенное использование

Второй параметр функции mysqli_fetch_array() управляет тем, как возвращается строка. Можно использовать три константы:

  • MYSQLI_ASSOC – Возвращает ассоциативный массив (имена столбцов в качестве ключей).
  • MYSQLI_NUM – Возвращает числовой массив (индексы столбцов в качестве ключей).
  • MYSQLI_BOTH – Возвращает и ассоциативный, и числовой массивы. Это режим по умолчанию, если второй параметр опущен.

Вот как получить строку в виде числового массива:

Выборка числового массива

php
<?php
// ... connection and query setup ...
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
    echo $row[0] . " - " . $row[1] . "<br>";
}
?>

При использовании MYSQLI_BOTH каждый столбец появляется в массиве дважды: один раз по имени и один раз по индексу. Это может быть полезно для устаревшего кода, но увеличивает потребление памяти, поэтому для современных приложений обычно предпочтительнее MYSQLI_ASSOC или MYSQLI_NUM.

Заключение

Функция mysqli_fetch_array() обеспечивает гибкое извлечение строк из наборов результатов MySQLi. Понимая режимы выборки и внедряя базовую обработку ошибок, вы сможете писать более надёжные и эффективные запросы к базе данных в PHP.

Практика

Что делает функция mysqli_fetch_array() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.