PHP 5的mysqli擴展
在通常情況下,使用PHP構建的應用系統都是搭配着MySQL數據庫,很長時間以來,mysql擴展一直伴隨着PHP與MySQL,併爲二者之間的交互提供了通道。mysql擴展庫提供的相關函數使PHP程序存取MySQL數據庫變得很容易,但是,隨着MySQL的發展,mysql擴展開始出現一些新問題,因爲mysql擴展無法支持MySQL 4.1及其更高版本的新特性。
面對mysql擴展功能上的的不足,PHP的開發人員決定建立一種全新支持PHP 5的MySQL擴展程序,這就是mysqli擴展。
23.5.1 mysqli簡介
mysqli擴展使得用戶可以利用MySQL 4.1及其更高版本的新功能,與mysql擴展相比,mysqli擴展在以下方面有了明顯的提高。
兼容性與維護性:mysqli擴展可以很容易地使用MySQL的新功能,所以mysqli擁有與MySQL更高的兼容性。即使MySQL的新版本又出現了更多功能,mysqli擴展也可以很容易的支持。
面向對象:mysqli擴展已封裝到一個類中,從而可使用面向對象的方式編程。即使對面向對象不瞭解,mysqli擴展也提供了面向過程的編程方式來供用戶選擇。
速度和安全性:mysqli擴展執行的速度要比之前版本的mysql擴展快了很多。mysqli擴展支持MySQL新版本的密碼雜湊(Password Hashes)和驗證程序,更加提高了應用程序的安全性。
預準備語句:預準備語句可提高重複使用的語句的性能,mysqli擴展提供了對預準備語句的支持。
調試功能:mysqli擴展進一步改進了調試功能,提高了開發效率。
要在PHP中使用mysqli擴展,需要在配置文件php.ini中添加如下的設置:
- extension=php_mysqli.dll
如果配置文件中已有上述設置,確保extension前面沒有";",否則將其去掉。下面開始介紹如何使用mysqli擴展來存取數據庫。
2 連接與斷開服務器
mysqli提供了面向對象和麪向過程兩種方式來與數據庫交互,分別看一下這兩種方式。
1.面向對象
在面向對象的方式中,mysqli被封裝成一個類,它的構造方法如下:
- __construct ([ string $host [, string $username
- [, string $passwd [, string $dbname
- [, int $port [, string $socket ]]]]]] )
在上述語法中涉及到的參數說明如下。
host:連接的服務器地址。
username:連接數據庫的用戶名,默認值是服務器進程所有者的用戶名。
passwd:連接數據庫的密碼,默認值爲空。
dbname:連接的數據庫名稱。
port:TCP端口號。
socket:UNIX域socket。
要建立與MySQL的連接可以通過其構造方法實例化mysqli類,例如下面的代碼:
- <?php
- $db_host="localhost";
- $db_user="root";
- $db_psw="root";
- $db_name="sunyang";
- $mysqli=new mysqli($db_host,$db_user,$db_psw,$db_name);
- ?>
mysqli還提供了一個連接MySQL的成員方法connect()。當實例化構造方法爲空的mysqli類時,用mysqli對象調用connect()方法同樣可連接MySQL,例如,下面的代碼:
- <?php
- $db_host="localhost";
- $db_user="root";
- $db_psw="root";
- $db_name="sunyang";
- $mysqli=new mysqli();
- $mysqli->connect($db_host,$db_user,$db_psw,$db_name);
- ?>
關閉與MySQL服務器的連接通過mysqli對象調用close()方法即可,例如:
- $mysqli->close();
2.面向過程
在面向過程的方式中,mysqli擴展提供了函數mysqli_connect()與MySQL建立連接,該函數的語法格式如下:
- mysqli mysqli_connect ([ string $host [, string $username
- [, string $passwd
- [, string $dbname [, int $port
- [, string $socket ]]]]]] )
mysqli_connect()函數的用法與mysql擴展中的mysql_connect()函數用法十分相似,下面是mysqli_connect()函數的用法示例:
代碼23-27 光盤\codes\第23章\23.5\mysqli_connect.php
- <?php
- $connection = mysqli_connect("localhost","root","root","sunyang");
- if ( $connection ) {
- echo "數據庫連接成功";
- }else {
- echo "數據庫連接失敗";
- }
- ?>
關閉與MySQL服務器的連接使用mysqli_close()函數,例如:
- mysqli_close();