程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysqli基礎知識

Mysqli基礎知識

編輯:關於MYSQL數據庫

       相信原來在開始學習php的時候,很多人使用的數據庫首選MySQL,連接數據庫的擴展首選mysql擴展,但隨著php版本的提高,mysql擴展正逐漸被mysqli和PDO所取代。正如使用mysql函數時給出的deprecated: The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead。學習mysqli擴展勢在必行了。

   相對於mysql擴展,mysqli擴展支持面向對象和面向過程兩種方式,支持預處理,支持事務處理,而且速度比mysql速度更快。本篇將主要介紹mysqli的面向對象的基本簡單操作。

mysqli安裝配置

  mysqli的安裝配置和其他配置一樣,首先要確認你的ext文件夾下存在php_mysqli.dll文件(一般而言是存在的),並且在php.ini文件中去掉“extension=php_mysqli.dll”這一行前的";",並且確定配置文件中extension_dir='ext目錄所在的位置。重新啟動服務器後,便可以使用mysqli擴展啦~

如何驗證mysqli擴展已經開啟了呢?

   其實最直接的是使用mysqli擴展的函數看看能不能用,例如通過能否連接數據庫判斷擴展已經安裝完成。連接成功,不必說,自然是裝好了,連接不成功,也不要輕易認為沒有裝好,我們還有後招,利用phpinfo()函數,我們可以明確知道mysqli是否可用。

   當然可以通過extension_loaded('mysqli') 來判斷是否裝載mysqli擴展,甚至可以通過get_loaded_extensions()獲得到底裝載了哪些擴展。

面向對象mysqli的使用

  對於使用過mysql擴展的開發者,mysqli無論是面向對象還是面向過程的 方式都是非常容易理解的,有種似曾相識的感覺。具體的屬性方法請參照php官方手冊,http://php.net/manual/zh/mysqli.summary.php,下面我我通過一段代碼示例mysqli的使用過程。

本例中操作做的表為test表,有id,title兩個字段。

<?php 
//配置文件完成相關配置
define("HOST", "localhost");
define("USER", 'root');
define("PWD", '');
define("DB", 'yii');

//建立連接,生成mysqli實例對象。
$mysqli=new Mysqli(HOST,USER,PWD,DB);

if ($mysqli->connect_errno) {
  "Connect Error:".$mysqli->connect_error;
}
//設置默認的字符集
$mysqli->set_charset('utf8');
$sql="select * from test";
//生成mysql_result對象
$result=$mysqli->query($sql);

//返回二維關聯數組,參數同理可以設定為MYSQLI_NUM返回索引數組,或者MYSQLI_BOTH二者兼有。
$rows=$result->fetch_all(MYSQLI_ASSOC);
//將結果指針調整到任意行
$result->data_seek(2);
$row=$result->fetch_row();
//$row=$result->fetch_array();
//$row=$result->fetch_assoc();
//$row=$result->fetch_object();

//釋放結果集
$result->free();
//$result->free_result();
//$result->close();

//關閉連接
$mysqli->close();

以上代碼僅僅是簡單地展現了如何 利用mysqli進行查詢,未對查詢結果集進行遍歷,如何取出數組中的數據應該不是難事。

需要注意的是$mysqli->query()執行的sql語句,成功執行SELECT, SHOW, DESCRIBE或 EXPLAIN查詢會返回一個mysqli_result 對象,其他查詢則返回 TRUE,執行失敗則都返回false。

在進行INSERT,UPDATE,DELETE操作時可以調用$mysqli->affected_rows獲得受影響記錄條數

$mysqli->affected_rows 返回值 返回-1表明sql語句出現問題,0表示沒有受影響的記錄,其他數值則是受影響條數。

執行多條SQL語句,預處理,以及事務處理也是mysqli的重要內容,我會在後來的隨筆中寫到。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved