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().