Mysqli基礎知識

       相信原來在開始學習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擴展勢在必行了。php

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

   mysqli安裝配置

  mysqli的安裝配置和其餘配置同樣,首先要確認你的ext文件夾下存在php_mysqli.dll文件(通常而言是存在的),而且在php.ini文件中去掉「extension=php_mysqli.dll」這一行前的";",而且肯定配置文件中extension_dir='ext目錄所在的位置。從新啓動服務器後,即可以使用mysqli擴展啦~mysql

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

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

   固然能夠經過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進行查詢,未對查詢結果集進行遍歷,如何取出數組中的數據應該不是難事。yii

 

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

 

在進行INSERT,UPDATE,DELETE操做時能夠調用$mysqli->affected_rows得到受影響記錄條數學習

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

   

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

 

p個s:第一次寫技術博客好緊張有木有!不少措辭不當的地方仍是但願你們多多提意見~

相關文章
相關標籤/搜索