PHP Conference Japan 2024

mysqli_stmt::result_metadata

mysqli_stmt_result_metadata

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::result_metadata -- mysqli_stmt_result_metadata從預備語句返回結果集詮釋資料

說明

物件導向風格

物件導向風格

public mysqli_stmt::result_metadata(): mysqli_result|false

程序式風格

mysqli_stmt_result_metadata(mysqli_stmt $statement): mysqli_result|false

如果傳遞給 mysqli_prepare() 的語句會產生結果集,mysqli_stmt_result_metadata() 會返回一個結果物件,可用於處理中繼資訊,例如欄位總數和個別欄位資訊。:

注意

mysqli_free_result()

如果傳遞給 mysqli_prepare() 的語句會產生結果集,mysqli_stmt_result_metadata() 會返回一個結果物件,可用於處理中繼資訊,例如欄位總數和個別欄位資訊。:

當您使用完結果集結構後,應該釋放它,您可以通過將其傳遞給 mysqli_free_result() 來完成。

mysqli_stmt_result_metadata() 返回的結果集僅包含元數據。它不包含任何列結果。列是通過使用帶有 mysqli_stmt_fetch() 的語句控制碼獲得的。

參數

statement

僅限程序式風格:由 mysqli_stmt_init() 返回的 mysqli_stmt 物件。

返回值

返回一個結果物件,如果發生錯誤則返回 false

錯誤/異常

如果啟用了 mysqli 錯誤報告(MYSQLI_REPORT_ERROR)且請求的操作失敗,則會產生警告。此外,如果模式設定為 MYSQLI_REPORT_STRICT,則會改為拋出 mysqli_sql_exception

範例

<?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("欄位名稱:%s\n", $field->name);

/* 關閉結果集 */
$result->close();

/* 關閉連線 */
$mysqli->close();
?>

範例 #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);
?>

另請參閱

新增註解

使用者貢獻的註解 1 則註解

potherca at gmail dot com
14 年前
如果 result_metadata() 返回 false,但 error/errno/sqlstate 顯示沒有發生錯誤,這表示您的查詢是不會產生結果集的查詢,例如 INSERT/UPDATE/DELETE 查詢,而不是 SELECT 查詢。

文件中已說明這一點:「如果傳遞給 mysqli_prepare() 的陳述式會產生結果集,則 mysqli_stmt_result_metadata() 會返回結果物件」,但並非每個人都清楚這究竟意味著什麼。

希望這有幫助。
To Top