MySQL與mysqli的區(qū)別是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)是一家專業(yè)提供攀枝花企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為攀枝花眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
mysql與mysqli的區(qū)別:
mysqli連接是永久連接,而mysql是非永久連接。
mysql連接:每當(dāng)?shù)诙问褂玫臅r(shí)候,都會(huì)重新打開一個(gè)新的進(jìn)程。
mysqli連接:一直都只使用同一個(gè)進(jìn)程。
好處:這樣就可以很大程度的減輕服務(wù)器端壓力。
當(dāng)然,如果mysql也需要永久連接的話,就可以使用mysql_pconnect()這個(gè)函數(shù)
mysqli的面向過程的使用:
01
$conn = mysqli_connect('localhost', 'root', '123', 'db_test') or ('error');
02
03
$sql = "select * from db_table";
04
05
$query = mysqli_query($conn,$sql);
06
07
while($row = mysqli_fetch_array($query)){
08
09
echo $row['title'];
10
11
}
mysqli的面向?qū)ο蟮氖褂茫?br/>
01
$conn = mysqli('localhost', 'root', '123', 'db_test');
02
03
$sql = "select * from db_table";
04
05
$query = $conn->query($sql);
06
07
while($row = $query->fetch_array()){
08
09
echo $row['title'];
10
11
}
mysql_connect與mysql_pconnect與mysqli_connect:
mysql_pconnect打開的連接不會(huì)關(guān)閉(即使調(diào)用mysql_close也不會(huì)關(guān)閉,因?yàn)閷?duì)其無效),
類似于連接緩沖池,如果下次有來自于同一個(gè)機(jī)器的同一個(gè)用戶名
對(duì)同一個(gè)數(shù)據(jù)庫的連接,php會(huì)自動(dòng)使用上次已經(jīng)建立的連接,而不需要再重新建立一個(gè)。
好處:是省去了每次與數(shù)據(jù)庫建立連接的開銷,
壞處:是需要浪費(fèi)一些內(nèi)存,占用一些連接,
所以如果用戶訪問量大的時(shí)候會(huì)出現(xiàn)錯(cuò)誤,要把mysql的max_connections參數(shù)改大一點(diǎn), 或者使用mysql_connect()就解決問題。
簡(jiǎn)單的來說MySQL_pconnect是用來在php與MySQL間建立一條持續(xù)連接,
一般php的執(zhí)行模式是腳本開始執(zhí)行時(shí)初始化所有資源, 腳本運(yùn)行結(jié)束后釋放所有資源.
而MySQL_pconnect的方式則不這樣, MySQL_connect每次都是重新通過tcp 等
跟sql服務(wù)器建立關(guān)系, 每次連接都是要消耗不少服務(wù)器資源的.
使用pconnect時(shí), 有請(qǐng)求連接MySQL時(shí), php會(huì)檢查是否之前有條相同的連接(以相同的用戶名密碼連接到同一個(gè)MySQL服務(wù)器)已經(jīng)建立,
如果有的話就直接使用這條連接, 值得注意的是這個(gè)相同的連接的概念是對(duì)進(jìn)程來說的,
不同的進(jìn)程連接 MySQL_pconnect建立會(huì)建立起多條連接.
connect與pconnect不會(huì)帶來功能的差異, 只有性能上的差別.
一般php有倆種運(yùn)行模式, 一是作為cgi運(yùn)行, 二是作為apache的模塊運(yùn)行.
作為cgi的時(shí)候connect跟pconnect沒什么不同, 因?yàn)槊看蝐gi進(jìn)行運(yùn)行結(jié)束后都會(huì)被銷毀清理掉資源.
php作為apache模塊方式運(yùn)行時(shí), 可以使用到數(shù)據(jù)庫持續(xù)連接, 但可能會(huì)存在潛在的問題,
看php手冊(cè),如果你是cgi安裝方式。pconnection永遠(yuǎn)也不會(huì)生效。
長(zhǎng)連接最大的缺點(diǎn)就是萬一一個(gè)用戶鎖死,當(dāng)前進(jìn)程就永久鎖死了。
假如你在apache里的設(shè)置是進(jìn)程永不銷毀的話就………………
也就是說盡量使用mysql_connect,因?yàn)檫\(yùn)行結(jié)束后會(huì)自動(dòng)中斷,符合的風(fēng)格吧。
也可以使用_connect和mysql_pconnect一起使用,就好像一個(gè)鏈接緩沖池一樣,
也就是說建立一個(gè)有mysql_connect 和 mysql_pconnect的類。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。