6.4.24 mysql_stmt_result_metadata()

MYSQL_RES *
mysql_stmt_result_metadata(MYSQL_STMT *stmt)

說明

mysql_stmt_result_metadata() 用於取得預先處理語句的結果集元數據。它的使用需要語句在由 mysql_stmt_execute() 執行時產生結果集。

mysql_stmt_result_metadata() 可以在使用 mysql_stmt_prepare() 準備語句之後和關閉語句處理常式之前呼叫。mysql_stmt_result_metadata() 傳回的結果集元數據是以指向 MYSQL_RES 結構的指標形式出現,該結構可用於處理元資訊,例如欄位數和個別欄位資訊。此結果集指標可以作為參數傳遞給任何處理結果集元數據的基於欄位的 API 函數,例如

如果用戶端已抑制元數據 (如第 3.6.7 節,「可選結果集元數據」中所述),則 MYSQL_RES 結構已填入欄位數,但沒有欄位資訊。

當您使用完元數據結果集結構時,請將其傳遞給 mysql_free_result() 以釋放它。這類似於您釋放從呼叫 mysql_store_result() 取得的結果集結構的方式。

如果您在 mysql_stmt_prepare() 之後但在 mysql_stmt_execute() 之前呼叫 mysql_stmt_result_metadata(),則元數據中的欄位類型由最佳化工具決定。如果您在 mysql_stmt_execute() 之後呼叫 mysql_stmt_result_metadata(),則元數據中的欄位類型與結果集中實際存在的類型相同。在大多數情況下,這些應該是相同的。

如果執行的語句是 CALL 語句,則它可能會產生多個結果集。在這種情況下,請勿在 mysql_stmt_prepare() 之後立即呼叫 mysql_stmt_result_metadata()。相反,在呼叫 mysql_stmt_execute() 之後,分別檢查每個結果集的元數據。如需此技術的範例,請參閱第 3.6.5 節,「預先處理的 CALL 語句支援」

mysql_stmt_result_metadata() 傳回的結果集僅包含元數據。它不包含任何列結果。要取得列結果,請在如同往常使用 mysql_stmt_execute() 執行語句之後,使用語句處理常式以及 mysql_stmt_fetch()

傳回值

MYSQL_RES 結果結構。如果預先處理的語句不存在元資訊,則為 NULL

錯誤

範例

請參閱 第 6.4.12 節,「mysql_stmt_fetch()」中的範例。