(PHP 5, PHP 7, PHP 8)
mysqli::store_result -- mysqli_store_result — 轉移上一次查詢(xún)返回的結果集
面向對象風(fēng)格
過(guò)程化風(fēng)格
遷移 link
參數所指定的連接上的上一次查詢(xún)返回的結果集,
遷移之后的結果集可以
在 mysqli_data_seek() 函數中使用。
mysql
僅以過(guò)程化樣式:由mysqli_connect() 或 mysqli_init() 返回的 mysqli 對象。
option
指定的選項,可以是下列中的某一值:
Name | Description |
---|---|
MYSQLI_STORE_RESULT_COPY_DATA |
將結果集從 mysqlnd 的內部緩沖區復制到 PHP 變量中。 默認情況下,mysqlnd 采取一種引用策略盡量避免在內容中復制多份同樣的結果集。 例如,對于一個(gè)包含了很多行的結果集,每個(gè)行中的內容又不是很大,那么復制結果集的過(guò)程會(huì )導致內存使用率下降, 因為用來(lái)保存結果集數據的 PHP 變量可能提前被釋放掉。 (此選項僅在使用 mysqlnd 驅動(dòng)且 PHP 5.6.0 之后可用)。 |
成功則返回一個(gè)緩沖的結果集對象,失敗則返回 false
。
注意:
如果上一查詢(xún)并不產(chǎn)生結果集(例如,執行了一個(gè) INSERT 語(yǔ)句), 那么 mysqli_store_result() 會(huì )返回
false
。 如果讀取結果集失敗了,也會(huì )返回false
。 如何區分是上面哪種情況導致此函數的調用返回了false
? 你可以通過(guò)下面的方法來(lái)檢測: mysqli_error() 返回了非空的字符串, mysqli_errno() 返回了非零值, 或者 mysqli_field_count() 返回了非零值, 都表示發(fā)生錯誤了。 還有一種可能的情況會(huì )導致此函數的調用返回false
:上一次查詢(xún) mysqli_query() 本身是成功的, 但是由于返回的結果集太大,無(wú)法為其分配足夠的內存來(lái)進(jìn)行結果集轉移。 如果 mysqli_field_count() 函數返回了一個(gè)非零值,那么表示 SQL 語(yǔ)句產(chǎn)生了一個(gè)非空的結果集。
注意:
執行查詢(xún)之后, 使用 mysqli_free_result() 函數來(lái)釋放結果集所占用的內存, 是一個(gè)很有用的實(shí)戰經(jīng)驗。 尤其是當使用 mysqli_store_result() 函數來(lái)轉移數量較大的結果集的時(shí)候, 釋放結果集內存的操作尤為重要。
See mysqli_multi_query().