mysqli::store_result

mysqli_store_result

(PHP 5, PHP 7, PHP 8)

mysqli::store_result -- mysqli_store_result轉移上一次查詢返回的結果集

說明

面向對象風格

mysqli::store_result(int $option = ?): mysqli_result

過程化風格

mysqli_store_result(mysqli $link, int $option = ?): mysqli_result

遷移 link 參數所指定的連接上的上一次查詢返回的結果集, 遷移之后的結果集可以 在 mysqli_data_seek() 函數中使用。

參數

mysql

僅以過程化樣式:由mysqli_connect()mysqli_init() 返回的 mysqli 對象。

option

指定的選項,可以是下列中的某一值:

Valid options
Name Description
MYSQLI_STORE_RESULT_COPY_DATA 將結果集從 mysqlnd 的內部緩沖區(qū)復制到 PHP 變量中。 默認情況下,mysqlnd 采取一種引用策略盡量避免在內容中復制多份同樣的結果集。 例如,對于一個包含了很多行的結果集,每個行中的內容又不是很大,那么復制結果集的過程會導致內存使用率下降, 因為用來保存結果集數據的 PHP 變量可能提前被釋放掉。 (此選項僅在使用 mysqlnd 驅動且 PHP 5.6.0 之后可用)。

返回值

成功則返回一個緩沖的結果集對象,失敗則返回 false。

注意:

如果上一查詢并不產生結果集(例如,執(zhí)行了一個 INSERT 語句), 那么 mysqli_store_result() 會返回 false。 如果讀取結果集失敗了,也會返回 false。 如何區(qū)分是上面哪種情況導致此函數的調用返回了 false? 你可以通過下面的方法來檢測: mysqli_error() 返回了非空的字符串, mysqli_errno() 返回了非零值, 或者 mysqli_field_count() 返回了非零值, 都表示發(fā)生錯誤了。 還有一種可能的情況會導致此函數的調用返回 false:上一次查詢 mysqli_query() 本身是成功的, 但是由于返回的結果集太大,無法為其分配足夠的內存來進行結果集轉移。 如果 mysqli_field_count() 函數返回了一個非零值,那么表示 SQL 語句產生了一個非空的結果集。

注釋

注意:

執(zhí)行查詢之后, 使用 mysqli_free_result() 函數來釋放結果集所占用的內存, 是一個很有用的實戰(zhàn)經驗。 尤其是當使用 mysqli_store_result() 函數來轉移數量較大的結果集的時候, 釋放結果集內存的操作尤為重要。

范例

See mysqli_multi_query().

參見