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()
一起使用。
-
記憶體不足。
-
發生未知的錯誤。
請參閱第 6.4.12 節「mysql_stmt_fetch()」中的範例。