fetch_array
В этой статье рассматривается функция mysqli_fetch_array() в PHP для получения строки из результирующего набора MySQLi в виде массива.
В этой статье мы подробно рассмотрим функцию mysqli_fetch_array() в PHP, которая используется для получения строки из результирующего набора MySQLi в виде ассоциативного, числового или комбинированного array. Мы дадим обзор функции, её параметров и практических примеров.
Введение в функцию mysqli_fetch_array()
Функция mysqli_fetch_array() — это встроенная функция PHP, которая извлекает строку из результирующего набора MySQLi. Она возвращает строку в виде ассоциативного array, числового array или обоих вариантов сразу, в зависимости от параметра result_type. Это особенно полезно, когда нужно перебирать результаты запроса и обращаться к столбцам по имени или индексу.
Функция работает с результатом, возвращённым mysqli_query(). Каждый вызов перемещает внутренний указатель на следующую строку и возвращает её; когда строк не остаётся, возвращается null (значение, завершающее цикл). Это наиболее гибкая из функций выборки MySQLi: mysqli_fetch_assoc() всегда возвращает ключи по именам, mysqli_fetch_row() всегда возвращает числовые ключи, а mysqli_fetch_array() позволяет выбрать любой из этих вариантов или оба.
Как использовать функцию mysqli_fetch_array()
Для использования mysqli_fetch_array() необходим корректный результирующий набор MySQLi. Как правило, функция применяется внутри цикла while для перебора всех строк. Вот полный пример с базовой обработкой ошибок:
Базовое использование с циклом while
<?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— возвращает ассоциативный array (имена столбцов в качестве ключей).MYSQLI_NUM— возвращает числовой array (индексы столбцов в качестве ключей).MYSQLI_BOTH— возвращает одновременно ассоциативный и числовой array. Это режим по умолчанию, если второй параметр не указан.
Вот как получить строку в виде числового array:
Выборка в виде числового array
<?php
// ... connection and query setup ...
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
echo $row[0] . " - " . $row[1] . "<br>";
}
?>При использовании MYSQLI_BOTH каждый столбец появляется в array дважды: один раз по имени и один раз по индексу. Это может быть полезно для устаревшего кода, но увеличивает использование памяти, поэтому для современных приложений предпочтительнее MYSQLI_ASSOC или MYSQLI_NUM. Если нужна только одна форма, лучше использовать специализированные функции mysqli_fetch_assoc() или mysqli_fetch_row(), которые не создают лишних ключей.
Объектно-ориентированный стиль
У mysqli_fetch_array() есть объектно-ориентированная форма. Если результат получен через $mysqli->query(), вызывайте метод на объекте результата вместо передачи результата в процедурную функцию:
Эквивалент в ООП-стиле
<?php
$result = $mysqli->query("SELECT * FROM my_table");
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
echo $row['column1'] . " - " . $row['column2'] . "<br>";
}
?>Оба стиля вызывают одно и то же базовое поведение; выбирайте тот, который соответствует остальному коду вашего проекта. Чтобы преобразовать каждую строку в object с именованными свойствами вместо array, используйте mysqli_fetch_object(), а для получения всех строк сразу в виде двумерного array см. mysqli_fetch_all().
Заключение
Функция mysqli_fetch_array() обеспечивает гибкое получение строк из результирующих наборов MySQLi. Понимание режимов выборки и использование базовой обработки ошибок позволяет писать более надёжные и эффективные запросы к базам данных на PHP.