真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL中mysql_store_result()和mysql_use_result()函數(shù)的區(qū)別是什么

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

廣河網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),廣河網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為廣河上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的廣河做網(wǎng)站的公司定做!

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

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

當(dāng)mysql_store_result()從服務(wù)器上檢索結(jié)果集時(shí),就提取了行,并為之分配內(nèi)存,存儲(chǔ)到客戶機(jī)中,隨后調(diào)用mysql_fetch_row()就再也不會(huì)返回錯(cuò)誤,因?yàn)樗鼉H僅是把行脫離了已經(jīng)保留結(jié)果集的數(shù)據(jù)結(jié)構(gòu)。

mysql_fetch_row()返回NULL始終表示已經(jīng)到達(dá)結(jié)果集的末端。相反,mysql_use_result()本身不檢索任何行,而只是啟動(dòng)一個(gè)逐行的檢索,就是說必須對(duì)每行調(diào)用mysql_fetch_row()來自己完成。既然如此,雖然正常情況下,mysql_fetch_row()返回NULL仍然表示此時(shí)已到達(dá)結(jié)果集的末端,但也可能表示在與服務(wù)器通信時(shí)發(fā)生錯(cuò)誤??赏ㄟ^調(diào)用mysql_errno()和mysql_error()將兩者區(qū)分開來。

與mysql_use_result()相比,mysql_store_result()有著較高的內(nèi)存和處理需求,因?yàn)槭窃诳蛻魴C(jī)上維護(hù)整個(gè)結(jié)果集,所以內(nèi)存分配和創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的耗費(fèi)是非常巨大的,要冒著溢出內(nèi)存的危險(xiǎn)來檢索大型結(jié)果集,如果想一次檢索多個(gè)行,可用mysql_use_result()  。mysql_use_result()有著較低的內(nèi)存需求,因?yàn)橹恍杞o每次處理的單行分配足夠的空間。這樣速度就較快,因?yàn)椴槐貫榻Y(jié)果集建立復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。另一方面,mysql_use_result()把較大的負(fù)載加到了服務(wù)器上,它必須保留結(jié)果集中的行,直到客戶機(jī)看起來適合檢索所有的行。這就使某些類型的客戶機(jī)程序不適用mysql_use_result():在用戶的請(qǐng)求下提前逐行進(jìn)行的交互式客戶機(jī)程序(不必僅僅因?yàn)橛脩粜枰缺Х榷尫?wù)器等待發(fā)送下一行)。

在行檢索之間做了許多處理的客戶機(jī)程序。在所有這些情況下,客戶機(jī)程序都不能很快檢索結(jié)果集的所有行,它限制了服務(wù)器,并對(duì)其他客戶機(jī)程序產(chǎn)生負(fù)面的影響,因?yàn)闄z索數(shù)據(jù)的表在查詢過程中是讀鎖定的。要更新表的客戶機(jī)或要插入行的任何客戶機(jī)程序都被阻塞。

在使用mysql_query()進(jìn)行一個(gè)查詢后,一般要用這兩個(gè)函數(shù)之一來把結(jié)果存到一個(gè)MYSQL_RES *變量中。

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

關(guān)于MySQL中mysql_store_result() 和 mysql_use_result() 函數(shù)的區(qū)別是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


當(dāng)前標(biāo)題:MySQL中mysql_store_result()和mysql_use_result()函數(shù)的區(qū)別是什么
URL標(biāo)題:http://weahome.cn/article/ppcgeg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部