Возвращает массив объектов, которые представляют поля результирующего набора

# mysqli_result::fetch_fields

# mysqli_fetch_fields

(PHP 5, PHP 7, PHP 8)

mysqli_result::fetch_fields -- mysqli_fetch_fields — Возвращает массив объектов, которые представляют поля результирующего набора

### Описание

Объектно-ориентированный стиль

public function mysqli_result::fetch_fields(): array

Процедурный стиль

function mysqli_fetch_fields(mysqli_result `$result`): array

Метод служит той же цели, что и функция mysqli_fetch_field(), с той только разницей, что вместо возврата по одному объекту для каждого поля возвращает столбцы как массив объектов.

### Список параметров

`result`
  Только для процедурного стиля: объект mysqli_result, который вернула функция mysqli_query(), mysqli_store_result(), mysqli_use_result() или mysqli_stmt_get_result().

### Возвращаемые значения

Метод возвращает массив объектов, которые содержат информацию об определении полей.

Свойства объекта
Свойство | Описание
--- | ---
name | Имя столбца
orgname | Исходное имя столбца, если указали псевдоним
table | Имя таблицы, которой принадлежит столбец (если не вычислено)
orgtable | Исходное имя таблицы, если указали псевдоним
def | Неиспользуемый. Всегда пустая строка
db | Имя базы данных
catalog | Неиспользуемый. Всегда `«def»`
max_length | Максимальная ширина поля результирующего набора. Начиная с PHP 8.1 это значение всегда равно `0`
length | Ширина поля в байтах. Для строковых столбцов значение длины зависит от кодировки соединения. Например, если кодировка — `latin1`, однобайтовый набор символов, значение длины для запроса `SELECT 'abc'` равно 3. Если кодировка — `utf8mb4`, многобайтовый набор символов, в котором символы занимают до 4 байтов, значение длины равно 12
charsetnr | Номер кодировки для поля
flags | Целое число, которое представляет битовые флаги для поля
type | Тип данных поля
decimals | Количество десятичных знаков для числовых полей и точность долей секунды для временных полей

### Примеры

Пример #1 Объектно-ориентированный стиль

    <?php

    $mysqli = new mysqli("127.0.0.1", "root", "foofoo", "sakila");

    /* Проверяем соединение */
    if ($mysqli->connect_errno) {
        printf("Не удалось подключиться: %s\n", $mysqli->connect_error);
        exit();
    }

    foreach (array('latin1', 'utf8') as $charset) {
        // Устанавливаем кодировку, чтобы показать влияние набора символов на некоторые значения (например, длину в байтах)
        $mysqli->set_charset($charset);

        $query = "SELECT actor_id, last_name from actor ORDER BY actor_id";

        echo "======================\n";
        echo "Character Set: $charset\n";
        echo "======================\n";

        if ($result = $mysqli->query($query)) {

            /* Читаем информацию о полях для каждого столбца */
            $finfo = $result->fetch_fields();

            foreach ($finfo as $val) {
                printf("Name:      %s\n",   $val->name);
                printf("Table:     %s\n",   $val->table);
                printf("Max. Len:  %d\n",   $val->max_length);
                printf("Length:    %d\n",   $val->length);
                printf("charsetnr: %d\n",   $val->charsetnr);
                printf("Flags:     %d\n",   $val->flags);
                printf("Type:      %d\n\n", $val->type);
            }
            $result->free();
        }
    }
    $mysqli->close();

    ?>

Пример #2 Процедурный стиль

    <?php

    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "sakila");

    /* Проверяем соединение */
    if (mysqli_connect_errno()) {
        printf("Не удалось подключиться: %s\n", mysqli_connect_error());
        exit();
    }

    foreach (array('latin1', 'utf8') as $charset) {
        // Устанавливаем кодировку, чтобы показать влияние набора символов на некоторые значения (например, длину в байтах)
        mysqli_set_charset($link, $charset);

        $query = "SELECT actor_id, last_name from actor ORDER BY actor_id";

        echo "======================\n";
        echo "Character Set: $charset\n";
        echo "======================\n";

        if ($result = mysqli_query($link, $query)) {
            /* Читаем информацию о полях для каждого столбца */
            $finfo = mysqli_fetch_fields($result);

            foreach ($finfo as $val) {
                printf("Name:      %s\n",   $val->name);
                printf("Table:     %s\n",   $val->table);
                printf("Max. Len:  %d\n",   $val->max_length);
                printf("Length:    %d\n",   $val->length);
                printf("charsetnr: %d\n",   $val->charsetnr);
                printf("Flags:     %d\n",   $val->flags);
                printf("Type:      %d\n\n", $val->type);
            }
            mysqli_free_result($result);
        }
    }

    mysqli_close($link);

    ?>

Результат выполнения приведённых примеров:

    ======================
    Character Set: latin1
    ======================
    Name:      actor_id
    Table:     actor
    Max. Len:  3
    Length:    5
    charsetnr: 63
    Flags:     49699
    Type:      2

    Name:      last_name
    Table:     actor
    Max. Len:  12
    Length:    45
    charsetnr: 8
    Flags:     20489
    Type:      253

    ======================
    Character Set: utf8
    ======================
    Name:      actor_id
    Table:     actor
    Max. Len:  3
    Length:    5
    charsetnr: 63
    Flags:     49699
    Type:      2

    Name:      last_name
    Table:     actor
    Max. Len:  12
    Length:    135
    charsetnr: 33
    Flags:     20489

### Смотрите также

- mysqli_num_fields() - Получает количество полей в наборе результатов
- mysqli_fetch_field_direct() - Получает метаданные конкретного поля
- mysqli_fetch_field() - Возвращает следующее поле результирующего набора

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open