PHP Australia Conference 2015

mysqli_stmt::result_metadata

mysqli_stmt_result_metadata

(PHP 5)

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_result mysqli_stmt::result_metadata ( void )

Estilo por procedimientos

mysqli_result mysqli_stmt_result_metadata ( mysqli_stmt $stmt )

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"$fiecampold->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 add a note

User Contributed Notes 1 note

up
10
potherca at gmail dot com
4 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