文件首頁
MySQL 9.0 C API 開發人員指南
下載本手冊
PDF (美式信紙) - 1.4Mb
PDF (A4) - 1.4Mb


5.4.84 mysql_store_result()

MYSQL_RES *
mysql_store_result(MYSQL *mysql)

說明

注意

mysql_store_result() 是一個同步函式。它的非同步對應函式是 mysql_store_result_nonblocking(),供需要與伺服器進行非同步通訊的應用程式使用。請參閱 第 7 章,C API 非同步介面

在呼叫 mysql_real_query()mysql_query() 之後,您必須針對每個成功產生結果集的陳述式 (例如:SELECTSHOWDESCRIBEEXPLAINCHECK TABLE 等) 呼叫 mysql_store_result()mysql_use_result()。完成結果集後,您也必須呼叫 mysql_free_result()

您不需要針對其他陳述式呼叫 mysql_store_result()mysql_use_result(),但在所有情況下都呼叫 mysql_store_result() 並不會造成任何損害或顯著的效能降低。您可以透過檢查 mysql_store_result() 是否傳回非零值 (稍後會詳細說明) 來偵測陳述式是否有結果集。

如果您啟用多重陳述式支援,您應該使用呼叫 mysql_next_result() 的迴圈,來判斷是否有更多結果,從呼叫 mysql_real_query()mysql_query() 的動作中擷取結果。如需範例,請參閱 第 3.6.3 節,「多重陳述式執行支援」

若要判斷陳述式是否傳回結果集,請呼叫 mysql_field_count()。請參閱 第 5.4.23 節,「mysql_field_count()」

mysql_store_result() 會將查詢的整個結果讀取到用戶端,配置 MYSQL_RES 結構,並將結果放入此結構中。

如果陳述式未傳回結果集 (例如,它是 INSERT 陳述式),或發生錯誤且讀取結果集失敗,mysql_store_result() 會傳回 NULL

如果沒有傳回任何資料列,則會傳回空的結果集。(空的結果集與做為傳回值的 Null 指標不同。)

在您呼叫 mysql_store_result() 並取回不是 Null 指標的結果之後,您可以呼叫 mysql_num_rows() 來找出結果集中有多少個資料列。

您可以呼叫 mysql_fetch_row() 從結果集擷取資料列,或是呼叫 mysql_row_seek()mysql_row_tell() 來取得或設定結果集中目前的資料列位置。

請參閱 第 3.6.9 節,「在 mysql_query() 成功後傳回 NULL mysql_store_result()」

傳回值

結果的 MYSQL_RES 結果結構的指標。如果陳述式未傳回結果集或發生錯誤,則為 NULL。若要判斷是否發生錯誤,請檢查 mysql_error() 是否傳回非空字串,mysql_errno() 是否傳回非零值,或 mysql_field_count() 是否傳回零。

錯誤

如果 mysql_store_result() 成功,則會重設 mysql_error()mysql_errno()