W3docs

field_count

Функция mysqli_field_count() в PHP возвращает количество столбцов последнего запроса, выполненного на соединении MySQLi.

Функция mysqli_field_count() возвращает количество столбцов, полученных самым последним запросом, выполненным на соединении MySQLi. Это удобный способ проверить структуру результирующего набора без сохранения объекта результата — полезная проверка после выполнения SELECT или после запроса, когда нужно убедиться в ожидаемом количестве столбцов перед выборкой строк.

В этой статье рассматриваются синтаксис функции, её параметры и возвращаемое значение, отличие от близкой по смыслу mysqli_num_fields(), а также примеры использования (процедурный и объектно-ориентированный стиль).

Синтаксис

// Procedural style
mysqli_field_count(mysqli $mysql): int

// Object-oriented style
$mysqli->field_count: int   // property, read as $mysqli->field_count
ЧастьОписание
$mysqlДескриптор соединения, возвращаемый mysqli_connect() (только процедурный стиль).
Возвращаемое значениеЗначение типа int — количество столбцов последнего запроса на данном соединении. Возвращает 0, если последний оператор не вернул результирующий набор (например, INSERT, UPDATE или DELETE).

Обратите внимание: объектно-ориентированная форма — это свойство только для чтения ($mysqli->field_count), а не вызов метода.

Как использовать mysqli_field_count()

Функция вызывается на активном соединении сразу после выполнения запроса. Нет необходимости сохранять объект результата — mysqli_field_count() читает количество столбцов непосредственно из состояния последнего запроса соединения.

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

if (mysqli_connect_errno()) {
    die("Connection failed: " . mysqli_connect_error());
}

$query = "SELECT id, name, email FROM users";
mysqli_query($mysqli, $query);

$num_fields = mysqli_field_count($mysqli);
printf("Number of columns: %d\n", $num_fields);  // Number of columns: 3

mysqli_close($mysqli);
?>

Здесь мы подключаемся с помощью mysqli_connect() и проверяем mysqli_connect_errno(), чтобы корректно завершить работу при ошибке. Выполняется SELECT, возвращающий три столбца, после чего количество столбцов считывается из соединения. Результат: Number of columns: 3.

mysqli_field_count() и mysqli_num_fields()

Обе функции отвечают на один и тот же вопрос — «сколько столбцов?» — но читают ответ из разных источников:

  • mysqli_field_count($mysqli) принимает соединение и сообщает количество столбцов самого последнего запроса. Используйте её, когда объект результата недоступен или не нужен.
  • mysqli_num_fields($result) принимает объект результата, возвращённый mysqli_query(). Используйте её, когда результат уже получен и вы собираетесь его перебирать.
<?php
$mysqli = mysqli_connect("localhost", "user", "pass", "shop");

$result = mysqli_query($mysqli, "SELECT id, title, price FROM products");

// From the result object:
echo mysqli_num_fields($result), "\n";   // 3

// From the connection (same last query):
echo mysqli_field_count($mysqli), "\n";  // 3

mysqli_free_result($result);
mysqli_close($mysqli);
?>

Типичный пример использования: проверка количества столбцов

Распространённый сценарий — защита кода, ожидающего определённую структуру результата: например, подтверждение того, что запрос вернул нужные столбцы, прежде чем начать их чтение.

<?php
$mysqli = mysqli_connect("localhost", "user", "pass", "shop");

mysqli_query($mysqli, "SELECT id, name FROM categories");

if (mysqli_field_count($mysqli) === 2) {
    echo "Result has the expected 2 columns.\n";
} else {
    echo "Unexpected column count.\n";
}

mysqli_close($mysqli);
?>

На что обратить внимание

  • Функция возвращает количество столбцов, а не строк. Для получения числа строк, затронутых операцией записи, используйте mysqli_affected_rows(); для получения автоинкрементного ключа после вставки — mysqli_insert_id().
  • Отражает только последний запрос на соединении. Если между обращениями выполнить другой запрос, счётчик обновится.
  • Неселективный оператор (INSERT/UPDATE/DELETE) оставляет счётчик равным 0.

Заключение

mysqli_field_count() — это лёгкий способ получить количество столбцов последнего запроса на соединении MySQLi без хранения объекта результата. Используйте её для проверки структуры результата, а mysqli_num_fields() предпочитайте тогда, когда объект результата уже доступен. Для знакомства со связанными функциями обработки результатов смотрите mysqli_query() и mysqli_fetch_field().

Практика

Практика
Какова функция 'field_count' в PHP?
Какова функция 'field_count' в PHP?
Was this page helpful?