This function serves an identical purpose to the
mysqli_fetch_field() function with the single
difference that, instead of returning one object at a time for each field,
the columns are returned as an array of objects.
Returns an array of objects containing field definition information.
Object properties
Property
Description
name
The name of the column
orgname
Original column name if an alias was specified
table
The name of the table this field belongs to (if not calculated)
orgtable
Original table name if an alias was specified
def
Unused. Always an empty string
db
The name of the database
catalog
Unused. Always "def"
max_length
The maximum width of the field for the result set. As of PHP 8.1, this value is always 0.
length
The width of the field in bytes. For string columns,
the length value depends on the connection character set. For example,
if the character set is latin1, a single-byte character set,
the length value for a SELECT 'abc' query is 3.
If the character set is utf8mb4, a multibyte character
set in which characters take up to 4 bytes, the length value is 12.
charsetnr
The character set number for the field.
flags
An integer representing the bit-flags for the field.
type
The data type used for this field
decimals
The number of decimals for numeric fields, and the fractional seconds precision for temporal fields.
Examples
Example #1 Object-oriented style
<?php
$mysqli = new mysqli("127.0.0.1", "root", "foofoo", "sakila");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
foreach (array('latin1', 'utf8') as $charset) {
// Set character set, to show its impact on some values (e.g., length in bytes)
$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)) {
/* Get field information for all columns */
$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();
?>
Example #2 Procedural style
<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "sakila");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
foreach (array('latin1', 'utf8') as $charset) {
// Set character set, to show its impact on some values (e.g., length in bytes)
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)) {
/* Get field information for all columns */
$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);
?>