PHP Doku:: Returns result set metadata from a prepared statement - mysqli-stmt.result-metadata.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDatenbankerweiterungenAnbieterspezifische DatenbankerweiterungenMySQL Improved ExtensionThe MySQLi_STMT classmysqli_stmt::result_metadata -- mysqli_stmt_result_metadata

Ein Service von Reinhard Neidl - Webprogrammierung.

The MySQLi_STMT class

<<mysqli_stmt::reset -- mysqli_stmt_reset

mysqli_stmt::send_long_data -- mysqli_stmt_send_long_data>>

mysqli_stmt::result_metadata

mysqli_stmt_result_metadata

(PHP 5)

mysqli_stmt::result_metadata -- mysqli_stmt_result_metadataReturns result set metadata from a prepared statement

Beschreibung

Objektorientierter Stil

mysqli_result mysqli_stmt::result_metadata ( void )

Prozeduraler Stil

mysqli_result mysqli_stmt_result_metadata ( mysqli_stmt $stmt )

If a statement passed to mysqli_prepare() is one that produces a result set, mysqli_stmt_result_metadata() returns the result object that can be used to process the meta information such as total number of fields and individual field information.

Hinweis:

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

The result set structure should be freed when you are done with it, which you can do by passing it to mysqli_free_result()

Hinweis:

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

Parameter-Liste

stmt

Nur bei prozeduralem Aufruf: ein von mysqli_stmt_init() zurückgegebenes Statementobjekt.

Rückgabewerte

Returns a result object or FALSE if an error occurred.

Beispiele

Beispiel #1 Objektorientierter Stil

<?php
$mysqli 
= new mysqli("localhost""my_user""my_password""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')");

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

/* get resultset for metadata */
$result $stmt->result_metadata();

/* retrieve field information from metadata result set */
$field $result->fetch_field();

printf("Fieldname: %s\n"$field->name);

/* close resultset */
$result->close();

/* close connection */
$mysqli->close();
?>

Beispiel #2 Prozeduraler Stil

<?php
$link 
mysqli_connect("localhost""my_user""my_password""test");

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

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

$stmt mysqli_prepare($link"SELECT id, name FROM friends");
mysqli_stmt_execute($stmt);

/* get resultset for metadata */
$result mysqli_stmt_result_metadata($stmt);

/* retrieve field information from metadata result set */
$field mysqli_fetch_field($result);

printf("Fieldname: %s\n"$field->name);

/* close resultset */
mysqli_free_result($result);

/* close connection */
mysqli_close($link);
?>

Siehe auch


2 BenutzerBeiträge:
- Beiträge aktualisieren...
potherca at gmail dot com
15.04.2010 9:52
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.
raatjetoe
16.03.2010 16:08
In order to fetch meta data for the expected result you do not have to execute a query, nor does the table have to contain any data.
The metadata is already available after the statement has been prepared.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)