国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 恩平市| 永丰县| 香河县| 全州县| 德昌县| 通河县| 高唐县| 绥宁县| 衡水市| 望城县| 永安市| 连城县| 苍溪县| 肥西县| 临江市| 洞头县| 清流县| 夏河县| 随州市| 银川市| 林周县| 昂仁县| 玉树县| 南平市| 嘉峪关市| 荣成市| 若尔盖县| 金坛市| 富民县| 城市| 永新县| 巴彦县| 化隆| 勃利县| 沁阳市| 深州市| 青阳县| 兴国县| 湘阴县| 洪雅县| 镇安县|