mysql與mysqli的區(qū)別與用法說明
更新時(shí)間:2010年07月03日 00:34:30 作者:
mysql是非持繼連接函數(shù)而mysqli是永遠(yuǎn)連接函數(shù)。
也就是說
mysql每次鏈接都會(huì)打開一個(gè)連接的進(jìn)程而mysqli多次運(yùn)行mysqli將使用同一連接進(jìn)程,從而減少了服務(wù)器的開銷
有些朋友在編程的時(shí)候,使用new mysqli('localhost', usenamer', 'password', 'databasename');總是報(bào)錯(cuò),F(xiàn)atal error: Class 'mysqli' not found in d:\...
mysqli類不是php自帶的嗎?
不是默認(rèn)開啟的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli編譯進(jìn)去
mysql是非持繼連接函數(shù)而mysqli是永遠(yuǎn)連接函數(shù),也就是說
mysql每次鏈接都會(huì)打開一個(gè)連接的進(jìn)程而mysqli多次運(yùn)行mysqli將使用同一連接進(jìn)程,從而減少了服務(wù)器的開銷
有些朋友在編程的時(shí)候,使用new mysqli('localhost', usenamer', 'password', 'databasename');總是報(bào)錯(cuò),F(xiàn)atal error: Class 'mysqli' not found in d:\...
mysqli類不是php自帶的嗎?
不是默認(rèn)開啟的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli編譯進(jìn)去
mysqli的面向過程的使用:
$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打開的連接不會(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()就解決問題。
首先兩個(gè)函數(shù)都是用來處理DB 的。
首先, mysqli 連接是永久連接,而mysql是非永久連接。什么意思呢? mysql連接每當(dāng)?shù)诙问褂玫臅r(shí)候,都會(huì)重新打開一個(gè)新的進(jìn)程,而mysqli則只使用同一個(gè)進(jìn)程,這樣可以很大程度的減輕服務(wù)器端壓力。
其次,mysqli封裝了諸如事務(wù)等一些高級(jí)操作,同時(shí)封裝了DB操作過程中的很多可用的方法。具體查看 http://cn.php.net/mysqli
應(yīng)用比較多的地方是 mysqli的事務(wù)。
比如下面的示例:
$mysqli = new mysqli('localhost','root','','DB_Lib2Test');
$mysqli->autocommit(false);//開始事物
$mysqli->query($sql1);
$mysqli->query($sql2);
if(!$mysqli->errno){
$mysqli->commit();
echo 'ok';
}else{
echo 'err';
$mysqli->rollback();
}
mysql每次鏈接都會(huì)打開一個(gè)連接的進(jìn)程而mysqli多次運(yùn)行mysqli將使用同一連接進(jìn)程,從而減少了服務(wù)器的開銷
有些朋友在編程的時(shí)候,使用new mysqli('localhost', usenamer', 'password', 'databasename');總是報(bào)錯(cuò),F(xiàn)atal error: Class 'mysqli' not found in d:\...
mysqli類不是php自帶的嗎?
不是默認(rèn)開啟的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli編譯進(jìn)去
mysql是非持繼連接函數(shù)而mysqli是永遠(yuǎn)連接函數(shù),也就是說
mysql每次鏈接都會(huì)打開一個(gè)連接的進(jìn)程而mysqli多次運(yùn)行mysqli將使用同一連接進(jìn)程,從而減少了服務(wù)器的開銷
有些朋友在編程的時(shí)候,使用new mysqli('localhost', usenamer', 'password', 'databasename');總是報(bào)錯(cuò),F(xiàn)atal error: Class 'mysqli' not found in d:\...
mysqli類不是php自帶的嗎?
不是默認(rèn)開啟的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli編譯進(jìn)去
mysqli的面向過程的使用:
復(fù)制代碼 代碼如下:
$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ū)ο蟮氖褂茫?
復(fù)制代碼 代碼如下:
$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打開的連接不會(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()就解決問題。
首先兩個(gè)函數(shù)都是用來處理DB 的。
首先, mysqli 連接是永久連接,而mysql是非永久連接。什么意思呢? mysql連接每當(dāng)?shù)诙问褂玫臅r(shí)候,都會(huì)重新打開一個(gè)新的進(jìn)程,而mysqli則只使用同一個(gè)進(jìn)程,這樣可以很大程度的減輕服務(wù)器端壓力。
其次,mysqli封裝了諸如事務(wù)等一些高級(jí)操作,同時(shí)封裝了DB操作過程中的很多可用的方法。具體查看 http://cn.php.net/mysqli
應(yīng)用比較多的地方是 mysqli的事務(wù)。
比如下面的示例:
復(fù)制代碼 代碼如下:
$mysqli = new mysqli('localhost','root','','DB_Lib2Test');
$mysqli->autocommit(false);//開始事物
$mysqli->query($sql1);
$mysqli->query($sql2);
if(!$mysqli->errno){
$mysqli->commit();
echo 'ok';
}else{
echo 'err';
$mysqli->rollback();
}
相關(guān)文章
MySQL4 File ‘c:\mysql\share\charsets\?.conf’ not found (Errc
File ‘c:\mysql\share\charsets\?.conf’ not found (Errcode: 22) Character set ‘#33′ is not a compiled character set and is not specified in the ‘c:\mysql\share\charsets\Index’ file2013-08-08

MySQL?分區(qū)表中分區(qū)鍵為什么必須是主鍵的一部分
這篇文章主要介紹了MySQL?分區(qū)表中分區(qū)鍵為什么必須是主鍵的一部分,分區(qū)是一種表的設(shè)計(jì)模式,通俗地講表分區(qū)是將一大表,根據(jù)條件分割成若干個(gè)小表,更多相關(guān)資料需要的小伙伴可以參考下面文章內(nèi)容
2022-03-03 
xampp中修改mysql默認(rèn)空密碼(root密碼)的方法分享
以前開發(fā)我一直都是用的phpnow做php開發(fā)環(huán)境,phpnow的特點(diǎn)就是一鍵安裝,安裝的時(shí)候會(huì)要求用戶輸入mysql的root密碼。今天由于客戶機(jī)器使用的xampp作為開發(fā)環(huán)境,所以碰到了修改mysql默認(rèn)空密碼的問題
2014-04-04 
MySQL合并查詢結(jié)果的實(shí)現(xiàn)
本文主要介紹了MySQL合并查詢結(jié)果的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
2023-03-03