文件首頁
MySQL 8.4 C API 開發人員指南
下載本手冊
PDF (US Ltr) - 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_real_query()mysql_query() 的結果中擷取結果,該迴圈會呼叫 mysql_next_result() 以判斷是否還有更多結果。如需範例,請參閱 第 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()