MySQLi Tutorial MySQLi References

mysqli_stmt result_metadata() Method



The mysqli_stmt::result_metadata() / mysqli_stmt_result_metadata() function returns result set metadata from a prepared statement if the prepared statement produces a result set. The returned result object can be used to process the meta information such as total number of fields and individual field information.

Note: The result set returned by this function contains only metadata. It does not contain any row results. The rows are obtained by using the statement handle with mysqli_stmt_fetch().

Note: This result set pointer can be passed as an argument to any of the field-based functions that process result set metadata, such as:

Syntax

//Object-oriented style
public mysqli_stmt::result_metadata()

//Procedural style
mysqli_stmt_result_metadata(statement)

Parameters

statement Required. For procedural style only: Specify a mysqli_stmt object returned by mysqli_stmt_init().

Return Value

Returns true on success and data has been fetched. Returns false if an error occurred. Returns null if no more rows/data exists or data truncation occurred.

Example: Object-oriented style

The example below shows the usage of mysqli_stmt::result_metadata() method.

<?php
//establishing connection to the database
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
  echo "Failed to connect to MySQL: ". $mysqli->connect_error;
  exit();
}

$stmt = $mysqli>prepare("SELECT Name, Age FROM Employee ORDER BY Age");

//executing the SQL statement
$stmt->execute();

//getting resultset for metadata
$result = $stmt->result_metadata();

//getting field information for all 
//columns from metadata result set
while ($finfo = $result->fetch_field()) {

  printf("Name:     %s\n", $finfo->name);
  printf("Table:    %s\n", $finfo->table);
  printf("max. Len: %d\n", $finfo->max_length);
  printf("Flags:    %d\n", $finfo->flags);
  printf("Type:     %d\n\n", $finfo->type);
}

//free the memory associated with the result
$result->close();

//closing the connection
$mysqli->close();
?>

The output of the above code will be similar to:

Name:     Name
Table:    Employee
max. Len: 50
Flags:    1
Type:     254

Name:     Age
Table:    Employee
max. Len: 10
Flags:    32769
Type:     4

Example: Procedural style

The example below shows the usage of mysqli_stmt_result_metadata() function.

<?php
//establishing connection to the database
$mysqli = mysqli_connect("localhost", "user", "password", "database");
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: ". mysqli_connect_error();
  exit();
}

$stmt = mysqli_prepare($mysqli, "SELECT Name, Age FROM Employee ORDER BY Age");

//executing the SQL statement
mysqli_stmt_execute($stmt);

//getting resultset for metadata
$result = mysqli_stmt_result_metadata($stmt);

//getting field information for all 
//columns from metadata result set
while ($finfo = mysqli_fetch_field($result)) {

  printf("Name:     %s\n", $finfo->name);
  printf("Table:    %s\n", $finfo->table);
  printf("max. Len: %d\n", $finfo->max_length);
  printf("Flags:    %d\n", $finfo->flags);
  printf("Type:     %d\n\n", $finfo->type);
}

//free the memory associated with the result
mysqli_free_result($result);

//closing the connection
mysqli_close($mysqli);
?>

The output of the above code will be similar to:

Name:     Name
Table:    Employee
max. Len: 50
Flags:    1
Type:     254

Name:     Age
Table:    Employee
max. Len: 10
Flags:    32769
Type:     4

❮ MySQLi Functions Reference