PHP Conference Nagoya 2025

mysqli_stmt::result_metadata

mysqli_stmt_result_metadata

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::result_metadata -- mysqli_stmt_result_metadataDevuelve los metadatos del conjunto de resultados de una sentencia preparada

Descripción

Estilo orientado a objetos

mysqli_stmt::result_metadata(): mysqli_result

Estilo por procedimientos

mysqli_stmt_result_metadata(mysqli_stmt $stmt): mysqli_result

Si una sentencia pasada a mysqli_prepare() produce un conjunto de resultados, mysqli_stmt_result_metadata() devolverá un objeto de resultados que puede usarse para procesar metainformación como el número total de campos e información de campo individual.

Nota:

Este puntero del conjunto de resultados puede ser pasado como parámetro a cualquier función basada en campos que procese los metadatos del conjunto de resultados, tales como:

La estructura del conjunto de resultados debería ser liberada cuando se termine con ella, lo que se puede hacer pasándose la a mysqli_free_result()

Nota:

El cojunto de resultados devuelto por mysqli_stmt_result_metadata() contiene únicamente metadatos. No contiene ningún resultado de filas. Las filas se obtienen usando el gestor de sentencias con mysqli_stmt_fetch().

Parámetros

stmt

Sólo estilo por procediminetos: Un identificador de declaraciones devuelto por mysqli_stmt_init().

Valores devueltos

Devuelve un objeto de resultados o false si ocurrió un error.

Ejemplos

Ejemplo #1 Estilo orientado a objetos

<?php
$mysqli
= new mysqli("localhost", "mi_usuario", "mi_contraseña", "test");

$mysqli->query("DROP TABLE IF EXISTS friends");
$mysqli->query("CREATE TABLE friends (id int, name varchar(20))");

$mysqli->query("INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

$sentencia = $mysqli->prepare("SELECT id, name FROM friends");
$sentencia->execute();

/* obtener el conjunto de resultados para los metadatos */
$resultado = $sentencia->result_metadata();

/* recuperar la información de campo de los metadatos del conjunto de resultados */
$campo = $resultado->fetch_field();

printf("Nombre del campo: %s\n", $campo->name);

/* cerrar el conjunto de resultados */
$resultado->close();

/* cerrar la conexión */
$mysqli->close();
?>

Ejemplo #2 Estilo por procedimientos

<?php
$enlace
= mysqli_connect("localhost", "mi_usuario", "mi_contraseña", "test");

mysqli_query($enlace, "DROP TABLE IF EXISTS friends");
mysqli_query($enlace, "CREATE TABLE friends (id int, name varchar(20))");

mysqli_query($enlace, "INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

$sentencia = mysqli_prepare($enlace, "SELECT id, name FROM friends");
mysqli_stmt_execute($sentencia);

/* obtener el conjunto de resultados para los metadatos */
$resultado = mysqli_stmt_result_metadata($sentencia);

/* recuperar la información de campo de los metadatos del conjunto de resultados */
$campo = mysqli_fetch_field($resultado);

printf("Nombre del campo: %s\n", $campo->name);

/* cerrar el conjunto de resultados */
mysqli_free_result($resultado);

/* cerrar la conexión */
mysqli_close($enlace);
?>

Ver también

add a note

User Contributed Notes 1 note

up
25
potherca at gmail dot com
14 years ago
If result_metadata() returns false but error/errno/sqlstate tells you no error occurred, this means your query is one that does not produce a result set, i.e. an INSERT/UPDATE/DELETE query instead of a SELECT query.

This is stated in the documentation where it says "If a statement passed to mysqli_prepare() is one that produces a result set, mysqli_stmt_result_metadata() returns the result object", but it might not be clear to everyone what this entails exactly.

Hope this helps.
To Top