MySQL與MySQLi是兩個(gè)不同的PHP擴(kuò)展程序,它們之間存在一些區(qū)別。
MySQL是傳統(tǒng)的PHP數(shù)據(jù)庫(kù)擴(kuò)展程序,使用過(guò)程中需要通過(guò)mysql_connect()函數(shù)來(lái)連接數(shù)據(jù)庫(kù),mysql_query()函數(shù)來(lái)執(zhí)行數(shù)據(jù)操作,mysql_fetch_array()函數(shù)來(lái)處理結(jié)果集等等。然而,這些函數(shù)已經(jīng)被官方廢棄,因此我們無(wú)法繼續(xù)使用它們。
而MySQLi是MySQL Improved的簡(jiǎn)稱,它是MySQL的新一代擴(kuò)展程序,提供更加高級(jí)和豐富的功能。在使用MySQLi時(shí),我們需要通過(guò)mysqli_connect()函數(shù)來(lái)連接數(shù)據(jù)庫(kù),mysqli_query()函數(shù)來(lái)執(zhí)行操作,mysqli_fetch_array()函數(shù)來(lái)處理結(jié)果集等等。
下面我們來(lái)看看MySQL和MySQLi在代碼層面上的區(qū)別:
// 連接MySQL $link = mysql_connect('localhost', 'root', 'password'); // 連接MySQLi $link = mysqli_connect('localhost', 'root', 'password');
從上面的代碼可以看出,連接MySQLi時(shí)只需在函數(shù)名前加上i,并且第一個(gè)參數(shù)需要用引號(hào)括起來(lái)。
// 查詢MySQL $result = mysql_query("SELECT * FROM table"); // 查詢MySQLi $result = mysqli_query($link, "SELECT * FROM table");
在執(zhí)行查詢操作時(shí),我們發(fā)現(xiàn)MySQLi需要傳入連接對(duì)象和SQL語(yǔ)句作為參數(shù)。
// 處理MySQL結(jié)果集 $row = mysql_fetch_array($result); // 處理MySQLi結(jié)果集 $row = mysqli_fetch_array($result);
在處理查詢結(jié)果集時(shí),兩者的函數(shù)名并沒(méi)有發(fā)生變化。但是,在使用MySQLi時(shí)我們可以選擇其他更為高級(jí)的函數(shù)來(lái)處理結(jié)果集,如mysqli_fetch_assoc()、mysqli_fetch_object()等等。
綜上所述,盡管MySQLi的函數(shù)名稍稍有點(diǎn)不同,但是它比MySQL更加強(qiáng)大,更適合大型項(xiàng)目的需求。因此,在進(jìn)行新項(xiàng)目開(kāi)發(fā)時(shí)建議使用MySQLi進(jìn)行數(shù)據(jù)庫(kù)操作。