Mysqli基礎(chǔ)知識(shí)
相信原來在開始學(xué)習(xí)php的時(shí)候,很多人使用的數(shù)據(jù)庫首選MySQL,連接數(shù)據(jù)庫的擴(kuò)展首選mysql擴(kuò)展,但隨著php版本的提高,mysql擴(kuò)展正逐漸被mysqli和PDO所取代。正如使用mysql函數(shù)時(shí)給出的deprecated: The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead。學(xué)習(xí)mysqli擴(kuò)展勢(shì)在必行了。
相對(duì)于mysql擴(kuò)展,mysqli擴(kuò)展支持面向?qū)ο蠛兔嫦蜻^程兩種方式,支持預(yù)處理,支持事務(wù)處理,而且速度比mysql速度更快。本篇將主要介紹mysqli的面向?qū)ο蟮幕竞?jiǎn)單操作。
mysqli安裝配置
mysqli的安裝配置和其他配置一樣,首先要確認(rèn)你的ext文件夾下存在php_mysqli.dll文件(一般而言是存在的),并且在php.ini文件中去掉“extension=php_mysqli.dll”這一行前的";",并且確定配置文件中extension_dir='ext目錄所在的位置。重新啟動(dòng)服務(wù)器后,便可以使用mysqli擴(kuò)展啦~
如何驗(yàn)證mysqli擴(kuò)展已經(jīng)開啟了呢?
其實(shí)最直接的是使用mysqli擴(kuò)展的函數(shù)看看能不能用,例如通過能否連接數(shù)據(jù)庫判斷擴(kuò)展已經(jīng)安裝完成。連接成功,不必說,自然是裝好了,連接不成功,也不要輕易認(rèn)為沒有裝好,我們還有后招,利用phpinfo()函數(shù),我們可以明確知道m(xù)ysqli是否可用。
當(dāng)然可以通過extension_loaded('mysqli') 來判斷是否裝載mysqli擴(kuò)展,甚至可以通過get_loaded_extensions()獲得到底裝載了哪些擴(kuò)展。
面向?qū)ο髆ysqli的使用
對(duì)于使用過mysql擴(kuò)展的開發(fā)者,mysqli無論是面向?qū)ο筮€是面向過程的 方式都是非常容易理解的,有種似曾相識(shí)的感覺。具體的屬性方法請(qǐng)參照php官方手冊(cè),http://php.net/manual/zh/mysqli.summary.php,下面我我通過一段代碼示例mysqli的使用過程。
本例中操作做的表為test表,有id,title兩個(gè)字段。
<?php
//配置文件完成相關(guān)配置
define("HOST", "localhost");
define("USER", 'root');
define("PWD", '');
define("DB", 'yii');
//建立連接,生成mysqli實(shí)例對(duì)象。
$mysqli=new Mysqli(HOST,USER,PWD,DB);
if ($mysqli->connect_errno) {
"Connect Error:".$mysqli->connect_error;
}
//設(shè)置默認(rèn)的字符集
$mysqli->set_charset('utf8');
$sql="select * from test";
//生成mysql_result對(duì)象
$result=$mysqli->query($sql);
//返回二維關(guān)聯(lián)數(shù)組,參數(shù)同理可以設(shè)定為MYSQLI_NUM返回索引數(shù)組,或者M(jìn)YSQLI_BOTH二者兼有。
$rows=$result->fetch_all(MYSQLI_ASSOC);
//將結(jié)果指針調(diào)整到任意行
$result->data_seek(2);
$row=$result->fetch_row();
//$row=$result->fetch_array();
//$row=$result->fetch_assoc();
//$row=$result->fetch_object();
//釋放結(jié)果集
$result->free();
//$result->free_result();
//$result->close();
//關(guān)閉連接
$mysqli->close();
以上代碼僅僅是簡(jiǎn)單地展現(xiàn)了如何 利用mysqli進(jìn)行查詢,未對(duì)查詢結(jié)果集進(jìn)行遍歷,如何取出數(shù)組中的數(shù)據(jù)應(yīng)該不是難事。
需要注意的是$mysqli->query()執(zhí)行的sql語句,成功執(zhí)行SELECT, SHOW, DESCRIBE或 EXPLAIN查詢會(huì)返回一個(gè)mysqli_result 對(duì)象,其他查詢則返回 TRUE,執(zhí)行失敗則都返回false。
在進(jìn)行INSERT,UPDATE,DELETE操作時(shí)可以調(diào)用$mysqli->affected_rows獲得受影響記錄條數(shù)
$mysqli->affected_rows 返回值 返回-1表明sql語句出現(xiàn)問題,0表示沒有受影響的記錄,其他數(shù)值則是受影響條數(shù)。
執(zhí)行多條SQL語句,預(yù)處理,以及事務(wù)處理也是mysqli的重要內(nèi)容,我會(huì)在后來的隨筆中寫到。
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
相關(guān)文章
MySQL數(shù)據(jù)庫怎么正確查詢字符串長(zhǎng)度
MySQL中字符串長(zhǎng)度一般指數(shù)據(jù)庫表中一個(gè)字段或列中存儲(chǔ)的字符串的最大長(zhǎng)度,有時(shí)我們需要測(cè)量字符串長(zhǎng)度,來保證表結(jié)構(gòu)及數(shù)據(jù)庫性能穩(wěn)定,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫怎么正確查詢字符串長(zhǎng)度的相關(guān)資料,需要的朋友可以參考下2023-06-06
MySQL數(shù)據(jù)庫如何給表設(shè)置約束詳解
約束主要完成對(duì)數(shù)據(jù)的檢驗(yàn),保證數(shù)據(jù)庫數(shù)據(jù)的完整性;如果有相互依賴數(shù)據(jù),保證該數(shù)據(jù)不被刪除,本篇文章教你如何給表設(shè)置約束2022-03-03
使用SKIP-GRANT-TABLES 解決 MYSQL ROOT密碼丟失
這篇文章主要介紹了使用SKIP-GRANT-TABLES 解決 MYSQL ROOT密碼丟失的相關(guān)資料,需要的朋友可以參考下2015-09-09
mysql出現(xiàn)提示錯(cuò)誤10061的解決方法
這篇文章主要為大家詳細(xì)介紹了mysql出現(xiàn)提示錯(cuò)誤10061的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
MySQL數(shù)據(jù)庫之存儲(chǔ)過程?procedure
這篇文章主要介紹了MySQL數(shù)據(jù)庫之存儲(chǔ)過程?procedure,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06

