mysql是非持繼連接函數而mysqli是永遠連接函數。也就是說
mysql每次鏈接都會打開一個連接的進程而mysqli多次運行mysqli將使用同一連接進程,從而減少了服務器的開銷
有些朋友在編程的時候,使用new mysqli('localhost', usenamer', 'password', 'databasename');總是報錯,Fatal error: Class 'mysqli' not found in d:...
mysqli類不是php自帶的嗎?
不是默認開啟的,win下要改php.ini,去掉php_mysqli.dll前的;,linux下要把mysqli編譯進去
實例
mysql.dll(可以理解為函數式的方式):
代碼如下 復制代碼
$conn = mysql_connect(‘localhost’, ‘user’, ‘password’); //連接mysql數據庫
mysql_select_db(‘data_base’); //選擇數據庫
$result = mysql_query(‘select * from data_base’);//這裡有第二個可選參數,指定打開的連接
$row = mysql_fetch_row( $result ) ) //為了簡單,這裡只取一行數據
echo $row[0]; //輸出第一個字段的值
mysql_pconnect打開的連接不會關閉(即使調用mysql_close也不會關閉,因為對其無效),
類似於連接緩沖池,如果下次有來自於同一個機器的同一個用戶名
對同一個數據庫的連接,php會自動使用上次已經建立的連接,而不需要再重新建立一個。
好處:是省去了每次與數據庫建立連接的開銷,
壞處:是需要浪費一些內存,占用一些連接,
所以如果用戶訪問量大的時候會出現錯誤,要把mysql的max_connections參數改大一點, 或者使用mysql_connect()就解決問題。
mysqli也有過程式的方式,只不過開始貫以mysqli的前綴,其他都差不多。如果mysqli以過程式的方式操作的話,有些函數必須指定資源,比如說 mysqli_query(資源標識,SQL語句),並且資源標識的參數是放在前面的,而mysql_query(SQL語句,’可選’)的資源標識是放在後面的,並且可以不指定,它默認是上一個打開的連接或資源。
實例
mysqli.dll(對象方式):
代碼如下 復制代碼 $conn = new mysqli(‘localhost’, ‘user’, ‘password’,'data_base’);-可以和mysql.dll一樣的方式使用;
-支持OO接口,簡簡單單調用;
-支持MYSQL4.引入的新特性;
-通過mysqli_init() 等相關函數,可以設置高級連接選項
一般安裝時選擇MySQL,因為有的服務器不支持MySQLi。