萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> php mysql mysqli區別比較詳解

php mysql mysqli區別比較詳解

文章今天來分析一下在php中的兩種數據庫連接方法mysql,mysqli以前我都是用mysql很少用mysqli,原因mysqli是php默認配置中是沒有開啟的下面我們來看它們之間各自的優點和不足吧。

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’);
  //這裡的連接是new出來的,最後一個參數是直接指定數據庫,不用mysql_select_db()了
  //也可以構造時候不指定,然後 $conn -> select_db(‘data_base’)
  $result = $conn -> query( ‘select * from data_base’ );
  $row = $result -> fetch_row();  //取一行數據
  echo row[0]; //輸出第一個字段的值

-可以和mysql.dll一樣的方式使用;

-支持OO接口,簡簡單單調用;

-支持MYSQL4.引入的新特性;

-通過mysqli_init() 等相關函數,可以設置高級連接選項

一般安裝時選擇MySQL,因為有的服務器不支持MySQLi。

copyright © 萬盛學電腦網 all rights reserved