91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解PHP數據庫操作之基于Mysqli的數據庫操作類庫

發布時間:2021-09-30 17:45:32 來源:億速云 閱讀:120 作者:iii 欄目:開發技術

本篇內容介紹了“如何理解PHP數據庫操作之基于Mysqli的數據庫操作類庫”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

此類庫簡單、易用,便于你自己修改和對功能的改善,能解決大部分 PHP 項目中執行的 SQL 操作。
初步工作
首先,請大家下載這個類庫 M.class.php 再下載一個 Mysqli 連接數據庫的類庫 MysqliDb.class.php(打包下載地址) 
新建一個 includes 的文件夾,將下載下來的兩個 class 文件,放進去。
后,請你在項目下創建一個 test.php 文件。注:UTF-8 文件格式
請先根據你機器的情況,填充以下代碼,用于連接數據庫:

復制代碼 代碼如下:

header('Content-Type:text/html;Charset=utf-8');
define('ROOT_PATH', dirname(__FILE__));
define('DB_HOST', 'localhost'); //數據庫服務器地址
define('DB_USER', 'root');  //數據庫用戶名
define('DB_PWD', '×××');//數據庫密碼
define('DB_NAME', '×××');  //數據庫名稱
define('DB_PORT', '3306');  //數據庫端口
function __autoload($className) {
    require_once ROOT_PATH . '/includes/'. ucfirst($className) .'.class.php'; //自動加載 class 文件
}

好了,上面的這些操作都是初步工作,下面正式進入類庫的講解。

類庫講解

首先,我們得實例化 M.class.php,實例化很簡單:

復制代碼 代碼如下:

$m = new M(); //這步操作代表 M.class.php 中的所有功能都封裝在了變量 $m 中

注:
1、M類庫中的方法參數說明,請到 M.class.php 文件中看詳細的注釋,這里不再進行敘述。建議在學習的時候,對照著看下文件中的參數即注釋。
2、講解代碼中用到的數據庫結構為:

復制代碼 代碼如下:

CREATE TABLE `user` (
  `id` int(8) unsigned NOT NULL auto_increment,
  `name` varchar(50) default NULL,
  `email` varchar(100) default NULL,
  `age` smallint(3) default NULL,
  `class_id` int(8) default NULL,
  `commit_time` int(10) default NULL,
  PRIMARY KEY  (`id`),
  KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

復制代碼 代碼如下:

CREATE TABLE `class` (
  `class_id` int(8) NOT NULL auto_increment,
  `class_name` varchar(100) default NULL,
  PRIMARY KEY  (`class_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

并添加一條測試數據。

3、M類庫中,大部分方法都分兩中類型,即:SQL方法;拼接方法,具體在實例中可以看出
4、以下稱述中的 M 為 M.class.php 文件

方法1、Insert() 添加數據

Insert 方法的全部使用案例如下:

復制代碼 代碼如下:

$m->Insert("user", null, array('焦焦', 'liruxing1715@sina.com', '23', time())); // 拼接方法:往`user`表中添加一條數據,返回值為數據庫影響的行數
$m->Insert("user", null, array('焦焦', 'liruxing1715@sina.com', '23', time()), true); // 功能同上,返回 last_insert_id(插入的增長id)
$m->Insert("INSERT INTO `user` (`name`, `email`, `age`, `commit_time`) VALUES ('張小花', 'zhangxiaohua@sina.com.cn', '22', '".time()."')"); //SQL方法,返回值為數據庫影響的行數
$m->Insert("INSERT INTO `user` (`name`, `email`, `age`, `commit_time`) VALUES ('張小花', 'zhangxiaohua@sina.com.cn', '22', '".time()."')", true); // 同上,返回 last_insert_id

注:Insert 方法中的第二個參數若為null,可自動獲得插入表除 auto_increment 字段之外的所有字段,詳情請看M源文件;若要返回值為最后插入的 ID,那么請設置 Insert 方法的最后一個參數為 true(默認是false);

方法2、Update() 修改數據

update 方法的全部使用案例如下:

復制代碼 代碼如下:

$m->Update("user", array('name'=>'李茹茹', 'age'=>24), "id=1"); //拼接方法,修改id為1的數據的名稱為“李茹茹”;年齡為“24”,其方法的返回值為受影響的行數
$m->Update("UPDATE `user` SET `name`='李茹茹', `age`=24 WHERE id = 1"); //SQL 用法,功能同上

方法3、Del() 刪除數據

Del 方法的全部使用案例如下:

復制代碼 代碼如下:

$m->Del('user', 'id=3'); //拼接方法:刪除`user`表中 id 為3的數據,返回受影響的行數
$m->Del("DELETE FROM `user` WHERE id=4"); //SQL方法:刪除`user`表中 id 為4的數據,返回受影響的行數
$m->Del("DELETE FROM `user` WHERE id in (10, 11, 12)"); //SQL方法:刪除多條數據,刪除`user`表中 id 為 10、11、12 的數據,返回受影響的行數

方法4、Total() 獲取記錄數,返回值都為int

Del 方法的全部使用案例如下:

復制代碼 代碼如下:

$m->Total('user'); //拼接方法:返回 `user`表中的記錄數,無條件
$m->Total('user', 'id>1'); //拼接方法:返回 `user`表中 id 大于1的記錄數,有條件
$m->Total("SELECT COUNT(*) AS total FROM `user`"); //SQL方法,注:使用SQL方法,語句中必須使用 "AS total",否則會報錯

方法5、IsExists() 檢查數據是否存在,返回值為boolean

復制代碼 代碼如下:

$m->IsExists('user', "`name`='焦焦'");  //拼接方法:返回`user`表中是否存在`name`為“焦焦”的數據,返回true,若不存在,返回false

方法6、InsertId() 獲取表下一個添加的自動增長id,注意,這里不進行添加操作,只是獲取下一個增長id

復制代碼 代碼如下:

echo $m->InsertId('user'); //獲取`user` 表下一個添加的自動增長id

方法7、GetRow() 返回單條數據,返回值為一維數組

GetRow 方法的全部使用案例如下:

復制代碼 代碼如下:

$data = $m->GetRow("SELECT `name`,email FROM `user` WHERE id=1");  //SQL方法,返回一維數組,例如:Array ( [name] => 焦焦 [email] => liruxing1715@sina.com )
$data = $m->GetRow("SELECT u.`name`, u.email, c.class_name FROM `user` u, `class` c WHERE u.class_id=c.class_id AND u.id=1");  //SQL方法,多表查詢
$data = $m->GetRow('user', '`name`,email', "id=1");  //拼接方法
$data = $m->GetRow('user as u,`class` c', 'u.`name`,u.email,c.class_name', "u.id=1 AND u.class_id=c.class_id"); //拼接方法,多表查詢
$data = $m->GetRow("SELECT `name`,email FROM `user`"); //如果沒有指定條件應該是顯示全部信息,但是在此方法中將默認顯示第一條(不推薦這么使用!!!)

$data 是查詢出來的一維數組。

方法8、GetOne() 返回單個數據

GetOne 方法的全部使用案例如下:

復制代碼 代碼如下:

$name = $m->GetOne("SELECT `name` FROM `user` WHERE id=1");  //SQL方法,返回一個字符串,例如:焦焦
$name = $m->GetOne("user", "name", "id=1");  //拼接方法,返回一個字符串,例如:焦焦

方法9、FetchAll() 返回所有記錄

復制代碼 代碼如下:

$data = $m->FetchAll("user");  //返回`user`表中的所有記錄,以二維數組的形式
$data = $m->FetchAll("SELECT * FROM `user`");  //SQL 方法,功能和返回值同上
$data = $m->FetchAll("user", "name,email", "id>1", 'id DESC', '2'); //返回兩條id>1的數據,只顯示name,email,并且以id 為倒序排序。注:請注意該方法的最后一個參數也可以為'0,2',目的是為分頁準備的,如果第一頁為'0,2'的話,那么第二頁就是'2,2'
//該方法也支持聯表查詢和多表查詢,下面以聯表查詢為例
$data = $m->FetchAll("`user` as u LEFT JOIN `class` as c ON u.class_id=c.class_id", "u.`name`,u.email, c.class_name", "u.id=1"); //注意:該拼接方法中,ON 添加的位置

注:對于該 FetchAll 方法,后續我會寫一篇使用該方法進行完美分頁的文章!!請關注。

方法10、MultiQuery() 執行多條SQL語句

復制代碼 代碼如下:

$sql = "INSERT INTO user (`name`,email, age, class_id, commit_time) VALUES ('賈花花', 'jiahuahua@sina.com.cn', '22', '1', '".time()."')"; //添加一個名叫“賈花花”的學生信息
$sql .= ";DELETE FROM `user` WHERE `name`='焦焦'"; //刪除一條名叫“焦焦”的學生信息
//解釋:$sql 是多條 SQL 以英文;(分號)拼接起來的
$data = $m->MultiQuery($sql); //返回為true,代表執行成功;為false,代表執行失敗

類庫講解完畢

到此該類庫的全部功能就講解完畢,希望你能多看看M文件,了解其內部運行的機制。M 文件不會存在執行緩慢情況,請大家放心使用。
如果在使用過程中出現 SQL 拼接錯誤,類庫會報出友善的錯誤提示。

“如何理解PHP數據庫操作之基于Mysqli的數據庫操作類庫”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衡阳市| 庆安县| 奈曼旗| 高碑店市| 淮南市| 竹山县| 汨罗市| 安宁市| 天柱县| 固始县| 南昌县| 阿拉尔市| 宜君县| 九江县| 民丰县| 大渡口区| 阿拉善右旗| 余干县| 玉门市| 于都县| 嘉峪关市| 绥滨县| 高唐县| 彝良县| 临猗县| 婺源县| 博兴县| 汤阴县| 沙坪坝区| 子长县| 若尔盖县| 澄城县| 咸丰县| 东山县| 望奎县| 岳普湖县| 岗巴县| 夏邑县| 丰台区| 昌都县| 沅陵县|