array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'mysqli-result.fetch-fields.php', 1 => 'mysqli_result::fetch_fields', ), 'up' => array ( 0 => 'class.mysqli-result.php', 1 => 'mysqli_result', ), 'prev' => array ( 0 => 'mysqli-result.fetch-field.php', 1 => 'mysqli_result::fetch_field', ), 'next' => array ( 0 => 'mysqli-result.fetch-object.php', 1 => 'mysqli_result::fetch_object', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/mysqli/mysqli_result/fetch-fields.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5, PHP 7, PHP 8)
mysqli_result::fetch_fields -- mysqli_fetch_fields — Retorna um array de objetos representando os campos em um conjunto de resultados
Estilo orientado a objetos
Estilo procedural
Esta função serve para o mesmo propósito que a função mysqli_fetch_field() com uma simples diferença, ao invés de retornar um objeto de cada vez para cada campo, as colunas são retornadas como um array de objetos.
result
Somente no estilo procedural: Um objeto mysqli_result retornado por mysqli_query(), mysqli_store_result(), mysqli_use_result() ou mysqli_stmt_get_result().
Retorna um array de objetos contendo informações de definições de campo.
Propriedade | Descrição |
---|---|
name | O nome da coluna |
orgname | O nome original da coluna se foi especificado um apelido |
table | O nome da tabela à qual o campo pertence (se não calculado) |
orgtable | Nome da tabela original se foi especificado um apelido |
max_length | A largura máxima do campo para o conjunto de resultados. A partir do PHP 8.1, este valor é sempre 0 . |
length | A largura do campo, em bytes, como especificada na definição da tabela. Note que este número (bytes) pode ser diferente do valor na definição da tabela (caracteres), dependendo do conjunto de caracteres sendo utilizado. Por exemplo, o conjunto de caracteres utf8 tem 3 bytes por caractere, por isso varchar(10) retornará um comprimento de 30 for utf8 (10*3), mas retornará 10 para latin1 (10*1). |
charsetnr | O número (id) do conjunto de caracteres do campo. |
flags | Um inteiro representando bits de opções para o campo. |
type | O tipo de dados usado para este campo |
decimals | O número de decimais usadas (para campos inteiros) |
Exemplo #1 Estilo orientado a objetos
<?php
$mysqli = new mysqli("127.0.0.1", "root", "foofoo", "sakila");
/*verifica a conexão */
if ($mysqli->connect_errno) {
printf("Conexão falhou: %s\n", $mysqli->connect_error);
exit();
}
foreach (array('latin1', 'utf8') as $charset) {
// Define o conjunto de caracteres, para mostrar seu impacto em alguns valores (ex.: comprimento em bytes)
$mysqli->set_charset($charset);
$query = "SELECT actor_id, last_name from actor ORDER BY actor_id";
echo "======================\n";
echo "Conjunto de Caracteres: $charset\n";
echo "======================\n";
if ($result = $mysqli->query($query)) {
/* Obtém informação de campo para todas as colunas */
$finfo = $result->fetch_fields();
foreach ($finfo as $val) {
printf("Nome: %s\n", $val->name);
printf("Tabela: %s\n", $val->table);
printf("Comp. máx: %d\n", $val->max_length);
printf("Comprimento: %d\n", $val->length);
printf("Id conj. carac: %d\n", $val->charsetnr);
printf("Opções: %d\n", $val->flags);
printf("Tipo: %d\n\n", $val->type);
}
$result->free();
}
}
$mysqli->close();
?>
Exemplo #2 Estilo procedural
<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "sakila");
/*verifica a conexão */
if (mysqli_connect_errno()) {
printf("Conexão falhou: %s\n", mysqli_connect_error());
exit();
}
foreach (array('latin1', 'utf8') as $charset) {
// Define o conjunto de caracteres, para mostrar seu impacto em alguns valores (ex.: comprimento em bytes)
mysqli_set_charset($link, $charset);
$query = "SELECT actor_id, last_name from actor ORDER BY actor_id";
echo "======================\n";
echo "Conjunto de Caracteres: $charset\n";
echo "======================\n";
if ($result = mysqli_query($link, $query)) {
/* Obtém informação de campo para todas as colunas */
$finfo = mysqli_fetch_fields($result);
foreach ($finfo as $val) {
printf("Nome: %s\n", $val->name);
printf("Tabela: %s\n", $val->table);
printf("Comp. máx: %d\n", $val->max_length);
printf("Comprimento: %d\n", $val->length);
printf("Id conj. carac: %d\n", $val->charsetnr);
printf("Opções: %d\n", $val->flags);
printf("Tipo: %d\n\n", $val->type);
}
mysqli_free_result($result);
}
}
mysqli_close($link);
?>
Os exemplos acima produzirão:
====================== Conjunto de Caracteres: latin1 ====================== Nome: actor_id Tabela: actor Comp. máx: 3 Comprimento: 5 Id conj. carac: 63 Opções: 49699 Tipo: 2 Nome: last_name Tabela: actor Comp. máx: 12 Comprimento: 45 Id conj. carac: 8 Opções: 20489 Tipo: 253 ====================== Conjunto de Caracteres: utf8 ====================== Nome: actor_id Tabela: actor Comp. máx: 3 Comprimento: 5 Id conj. carac: 63 Opções: 49699 Tipo: 2 Nome: last_name Tabela: actor Comp. máx: 12 Comprimento: 135 Id conj. carac: 33 Opções: 20489