(PHP 5, PHP 7, PHP 8)
mysqli_result::fetch_fields -- mysqli_fetch_fields — Возвращает массив объектов, которые представляют поля результирующего набора
Объектно-ориентированный стиль
Процедурный стиль
Метод служит той же цели, что и функция 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