文字

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

说明

面向对象风格

mysqli_result mysqli_stmt::result_metadata ( void )

过程化风格

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.

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:

  • mysqli_num_fields()

  • mysqli_fetch_field()

  • mysqli_fetch_field_direct()

  • mysqli_fetch_fields()

  • mysqli_field_count()

  • mysqli_field_seek()

  • mysqli_field_tell()

  • mysqli_free_result()

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

Note:

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() .

参数

stmt

仅以过程化样式:由 mysqli_stmt_init() 返回的 statement 标识。

返回值

Returns a result object or FALSE if an error occurred.

范例

Example #1 面向对象风格

<?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 ();


$result  $stmt -> result_metadata ();


$field  $result -> fetch_field ();

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


$result -> close ();


$mysqli -> close ();
?>

Example #2 过程化风格

<?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 );


$result  mysqli_stmt_result_metadata ( $stmt );


$field  mysqli_fetch_field ( $result );

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


mysqli_free_result ( $result );


mysqli_close ( $link );
?>

参见

  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_free_result() - Frees the memory associated with a result

用户评论:

[#1] potherca at gmail dot com [2010-04-15 00:52:18]

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.

上一篇: 下一篇: