国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > ThinkPHP > 正文

對thinkphp數(shù)據(jù)庫操作的片段理解

2024-09-09 15:19:45
字體:
來源:轉載
供稿:網(wǎng)友

thinkphp  操作數(shù)據(jù)庫有三個類:Db.class.php,DbMysql.class.php,Model.class.php

1.控制器中實例化數(shù)據(jù)庫模型

2.調用數(shù)據(jù)庫模型類中的方法(拿方法add來示例)

3.數(shù)據(jù)庫模型類中方法調用DbMysql.class.php  類中的方法,但實際上DbMysql.class.php 繼承了Db.class.php

實例化模型類就操作了很多操作,比如連接數(shù)據(jù)庫.

$user=M('User');

$user->data($data)->add();

就這兩步過程具體是怎么在執(zhí)行呢?

一:在model中構造函數(shù),執(zhí)行了如下的操作

獲取數(shù)據(jù)庫模型的名稱,獲取數(shù)據(jù)庫的相關信息,如表名,表前綴,最后再調用model里面的db方法操作數(shù)據(jù)庫的連接

二:默認此時已經(jīng)連接了數(shù)據(jù)庫,那么add()這個方法具體做了些什么事情?

add($data='',$options=array(),$replace=false){}

它做了三件事情:

1.分析add方法里面是否傳遞了參數(shù)

(1).如果$data為空,獲取當前對象的值,即data()方法返回的值

(2).如果為空報錯

(3).將對象返回的值在賦給變量$data,賦給_facade($data)被它處理

2.分析表達式:(實際上就是獲取數(shù)據(jù)庫表表名,模型的信息,where條件,limit等來為拼湊sql語句作準備)

(1).獲取表名,模型名(_parseOptions()該函數(shù)獲取所有數(shù)據(jù)庫操作的信息存入數(shù)組)

(2).拼湊sql:parseSql(),parseLock(),在Db.class.php中

通過獲取的數(shù)據(jù)庫sql相關信息,如where,limit,通過parsesql()函數(shù)處理替換SELECT%DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT% %UNION%這個語句.

最后就變成了類似:SELECT * FROM `think_fenzhu` WHERE id=33 LIMIT 1

3.數(shù)據(jù)處理

4.執(zhí)行插入操作(返回插入的id值)

執(zhí)行插入理解:$this->db->add(); 調用Db.class.php  中的insert()方法

這是個人的片段理解,如有問題,請大牛諒解.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 民和| 芜湖县| 永胜县| 嘉义市| 唐河县| 苏尼特右旗| 长海县| 墨脱县| 杨浦区| 阿拉尔市| 溆浦县| 乌拉特后旗| 盐池县| 龙井市| 台中县| 西宁市| 杂多县| 凤冈县| 南澳县| 江山市| 葫芦岛市| 新巴尔虎右旗| 公安县| 繁峙县| 丰都县| 乌兰县| 剑川县| 搜索| 潍坊市| 从化市| 天等县| 凤庆县| 醴陵市| 汶上县| 手游| 五大连池市| 罗甸县| 南皮县| 福建省| 那曲县| 固原市|