mysql與mysqli的區(qū)別與用法說(shuō)明

mysql是非持繼連接函數(shù)而mysqli是永遠(yuǎn)連接函數(shù)。

也就是說(shuō)

mysql每次鏈接都會(huì)打開(kāi)一個(gè)連接的進(jìn)程而mysqli多次運(yùn)行mysqli將使用同一連接進(jìn)程,從而減少了服務(wù)器的開(kāi)銷(xiāo)

有些朋友在編程的時(shí)候,使用new mysqli(‘localhost’, usenamer’, ‘password’, ‘databasename’);總是報(bào)錯(cuò),F(xiàn)atal error: Class ‘mysqli’ not found in d:…
mysqli類(lèi)不是php自帶的嗎?

不是默認(rèn)開(kāi)啟的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli編譯進(jìn)去

mysql是非持繼連接函數(shù)而mysqli是永遠(yuǎn)連接函數(shù),也就是說(shuō)

mysql每次鏈接都會(huì)打開(kāi)一個(gè)連接的進(jìn)程而mysqli多次運(yùn)行mysqli將使用同一連接進(jìn)程,從而減少了服務(wù)器的開(kāi)銷(xiāo)
有些朋友在編程的時(shí)候,使用new mysqli(‘localhost’, usenamer’, ‘password’, ‘databasename’);總是報(bào)錯(cuò),F(xiàn)atal error: Class ‘mysqli’ not found in d:…
mysqli類(lèi)不是php自帶的嗎?

不是默認(rèn)開(kāi)啟的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli編譯進(jìn)去
mysqli的面向過(guò)程的使用:
代碼如下:
$conn = mysqli_connect(‘localhost’, ‘root’, ‘123’, ‘db_test’) or (‘error’);
$sql = “select * from db_table”;
$query = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($query)){
echo $row[‘title’];
}

mysqli的面向?qū)ο蟮氖褂茫?
代碼如下:
$conn = mysqli(‘localhost’, ‘root’, ‘123’, ‘db_test’);
$sql = “select * from db_table”;
$query = $conn->query($sql);
while($row = $query->fetch_array()){
echo $row[‘title’];
}

mysql_pconnect打開(kāi)的連接不會(huì)關(guān)閉(即使調(diào)用mysql_close也不會(huì)關(guān)閉,因?yàn)閷?duì)其無(wú)效),
類(lèi)似于連接緩沖池,如果下次有來(lái)自于同一個(gè)機(jī)器的同一個(gè)用戶名
對(duì)同一個(gè)數(shù)據(jù)庫(kù)的連接,php會(huì)自動(dòng)使用上次已經(jīng)建立的連接,而不需要再重新建立一個(gè)。
好處:是省去了每次與數(shù)據(jù)庫(kù)建立連接的開(kāi)銷(xiāo),
壞處:是需要浪費(fèi)一些內(nèi)存,占用一些連接,
所以如果用戶訪問(wèn)量大的時(shí)候會(huì)出現(xiàn)錯(cuò)誤,要把mysql的max_connections參數(shù)改大一點(diǎn), 或者使用mysql_connect()就解決問(wèn)題。

首先兩個(gè)函數(shù)都是用來(lái)處理DB 的。

首先, mysqli 連接是永久連接,而mysql是非永久連接。什么意思呢? mysql連接每當(dāng)?shù)诙问褂玫臅r(shí)候,都會(huì)重新打開(kāi)一個(gè)新的進(jìn)程,而mysqli則只使用同一個(gè)進(jìn)程,這樣可以很大程度的減輕服務(wù)器端壓力。
其次,mysqli封裝了諸如事務(wù)等一些高級(jí)操作,同時(shí)封裝了DB操作過(guò)程中的很多可用的方法。具體查看

應(yīng)用比較多的地方是 mysqli的事務(wù)。
比如下面的示例:
代碼如下:
$mysqli = new mysqli(‘localhost’,’root’,”,’DB_Lib2Test’);
$mysqli->autocommit(false);//開(kāi)始事物
$mysqli->query($sql1);
$mysqli->query($sql2);
if(!$mysqli->errno){
$mysqli->commit();
echo ‘ok’;
}else{
echo ‘err’;
$mysqli->rollback();
}

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享