中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • MySQL中mysql_store_result() 和 mysql_use_result() 函數的區別是什么

MySQL中mysql_store_result() 和 mysql_use_result() 函數的區別是什么

發布時間:2021-07-28 14:22:41 來源:億速云 閱讀:131 作者:Leah 欄目:數據庫

這篇文章給大家介紹MySQL中mysql_store_result() 和 mysql_use_result() 函數的區別是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

函數mysql_store_result()與mysql_use_result()類似,它們都有連接處理程序參數,并返回結果集。但實際上兩者間的區別還是很大的。兩個函數之間首要的區別在于從服務器上檢索結果集的行。

當調用時,mysql_store_result()立即檢索所有的行,而mysql_use_result()啟動查詢,但實際上并未獲取任何行,mysql_store_result()假設隨后會調用mysql_fetch_row()檢索記錄。這些行檢索的不同方法引起兩者在其他方面的不同。本文加以比較,以便了解如何選擇最適合應用程序的方法。

當mysql_store_result()從服務器上檢索結果集時,就提取了行,并為之分配內存,存儲到客戶機中,隨后調用mysql_fetch_row()就再也不會返回錯誤,因為它僅僅是把行脫離了已經保留結果集的數據結構。

mysql_fetch_row()返回NULL始終表示已經到達結果集的末端。相反,mysql_use_result()本身不檢索任何行,而只是啟動一個逐行的檢索,就是說必須對每行調用mysql_fetch_row()來自己完成。既然如此,雖然正常情況下,mysql_fetch_row()返回NULL仍然表示此時已到達結果集的末端,但也可能表示在與服務器通信時發生錯誤。可通過調用mysql_errno()和mysql_error()將兩者區分開來。

與mysql_use_result()相比,mysql_store_result()有著較高的內存和處理需求,因為是在客戶機上維護整個結果集,所以內存分配和創建數據結構的耗費是非常巨大的,要冒著溢出內存的危險來檢索大型結果集,如果想一次檢索多個行,可用mysql_use_result()  。mysql_use_result()有著較低的內存需求,因為只需給每次處理的單行分配足夠的空間。這樣速度就較快,因為不必為結果集建立復雜的數據結構。另一方面,mysql_use_result()把較大的負載加到了服務器上,它必須保留結果集中的行,直到客戶機看起來適合檢索所有的行。這就使某些類型的客戶機程序不適用mysql_use_result():在用戶的請求下提前逐行進行的交互式客戶機程序(不必僅僅因為用戶需要喝杯咖啡而讓服務器等待發送下一行)。

在行檢索之間做了許多處理的客戶機程序。在所有這些情況下,客戶機程序都不能很快檢索結果集的所有行,它限制了服務器,并對其他客戶機程序產生負面的影響,因為檢索數據的表在查詢過程中是讀鎖定的。要更新表的客戶機或要插入行的任何客戶機程序都被阻塞。

在使用mysql_query()進行一個查詢后,一般要用這兩個函數之一來把結果存到一個MYSQL_RES *變量中。

兩者的主要區別是,mysql_use_result()的結果必須“一次性用完”,也就是說用它得到一個result后,必須反復用mysql_fetch_row()讀取其結果直至該函數返回null為止,否則如果你再次進行mysql查詢,就會得到“Commands out of sync; you can’t run this command now”的錯誤。而mysql_store_result()得到的result是存下來的,你無需把全部行結果讀完,就可以進行另外的查詢。例如你進行一個查詢,得到一系列記錄,再根據這些結果,用一個循環再進行數據庫查詢,就只能用mysql_store_result()。

關于MySQL中mysql_store_result() 和 mysql_use_result() 函數的區別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邮箱| 邓州市| 当涂县| 庄浪县| 望谟县| 商水县| 乌拉特前旗| 阿瓦提县| 昭觉县| 淮南市| 昭平县| 辽宁省| 塔城市| 寿阳县| 云龙县| 安溪县| 大宁县| 枣强县| 郴州市| 嘉峪关市| 九龙坡区| 盐津县| 广灵县| 鄂尔多斯市| 阳信县| 湖北省| 天门市| 岗巴县| 泌阳县| 朔州市| 丹寨县| 禹州市| 青冈县| 沙坪坝区| 抚州市| 布尔津县| 确山县| 乐至县| 巢湖市| 绥宁县| 汉川市|