日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

TP框架对数据库的基本操作

發布時間:2024/4/14 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TP框架对数据库的基本操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據庫的操作,無疑就是連接數據庫,然后對數據庫中的表進行各種查詢,然后就是對數據的增刪改的操作,一步步的講述一下框架對數據庫的操作

想要操作數據庫,第一步必然是要:鏈接數據庫

一、鏈接數據庫

(1)找到模塊文件夾中的Conf文件夾,然后進行編寫config.php文件

我這里是這樣的文件路徑

(2)打開這個config.php文件,然后找到父類配置文件convention.php文件,將關于"數據庫"的部分復制粘貼到config.php配置文件中

1 2 3 4 5 6 7 8 9 /* 數據庫設置 */ ???'DB_TYPE'?????????????? =>? '',???? // 數據庫類型 ???'DB_HOST'?????????????? =>? '', // 服務器地址 ???'DB_NAME'?????????????? =>? '',????????? // 數據庫名 ???'DB_USER'?????????????? =>? '',????? // 用戶名 ???'DB_PWD'??????????????? =>? '',????????? // 密碼 ???'DB_PORT'?????????????? =>? '',??????? // 端口 ???'DB_PREFIX'???????????? =>? '',??? // 數據庫表前綴 ???'DB_FIELDS_CACHE'?????? =>? true,??????? // 啟用字段緩存(開發時這個要寫成false)

 下面是我的數據庫連接內容

1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php     return array( ????//'配置項'=>'配置值' ?????? ????/* 數據庫設置 */ ????'DB_TYPE'?????????????? =>? 'mysql',???? // 數據庫類型 ????  'DB_HOST'?????????????? =>? 'localhost', // 服務器地址 ????  'DB_NAME'?????????????? =>? 'test3',????????? // 數據庫名 ????  'DB_USER'?????????????? =>? 'root',????? // 用戶名 ????  'DB_PWD'??????????????? =>? '123',????????? // 密碼 ????  'DB_PORT'?????????????? =>? '3306',??????? // 端口 ????  'DB_PREFIX'???????????? =>? '',?????? // 數據庫表前綴     'DB_FIELDS_CACHE'?????? =>? false,??? // 啟用字段緩存(開發時這個要是false) );

 

連接成功后,然后就是新建模型文件了

?

二、新建模型文件(具體內容看ThinkPhp框架知識)

(1)找到模塊文件夾中的Model文件夾,然后在這個文件夾新建模型文件

a)???????? model本身就是一個類文件

b)??????? 數據庫中的每個數據表都對應一個model模型文件

c)???????? 最簡單的數據model模型類

自己的模型文件

1 2 3 4 5 6 7 <?php namespace Home\Model;?? //命名空間的寫法 use Think\Model;????????? //使用模型 class InfoModel extends Model { ?????? }

  

(2)看下這個數據模型

我們可以再控制器文件夾中進行編寫控制文件,這里有了一個控制文件,我就用這個了

打開控制文件,然后寫個方法,這里叫做ceshi()

1 2 3 4 5 6 public function ceshi() {   $info = new \Home\Model\InfoModel();? //造新對象,這里是Info模型   var_dump($info);? //輸出一下,看下結果 ?????????? }

 出看一下結果,注意這里地址欄的寫法(在框架知識中已經介紹過了4中訪問方式了):

這是我的路徑:

下面是對應的模型數據:

?三、對數據庫進行各種查詢(下面的是ThinkPHP模型基礎類提供的“連貫操作方法”連貫操作方法)

可以利用這個控制文件中的方法,就直接在這個方法中寫了

1 2 3 4 5 6 public function ceshi() {   $info = new \Home\Model\InfoModel();? //造新對象,這里是Info模型   //下面是數據庫操作 ?????????? }

  

(1)查詢表中的所有數據(方法:select())

返回的二維數組(關聯的)
返回的數據其中的字段名稱是小寫,這樣做數據庫時盡量是小寫的

例如:

1 2 $arr = $info->select(); var_dump($arr);

看下是不是查詢的數據庫中所有內容

數據庫中的內容:

?

(2)查詢一條數據(方法:find())

?例如:

1 $arr = $info->find("p002");<br>var_dump($arr);

  這是查詢的:代號是"p002"的信息,如下:

select()方法也是可以查詢一條或是多條數據,如下:

1 2 $arr = $info->select("p001,p002"); var_dump($arr);

  這是查詢的:代號是"p001"和"p002"的信息,如下:

(3)條件查詢數據(方法:where())

1 $arr = $info->where("code='p003'")->select();<br>var_dump($arr); 

  這是查詢的條件:代號是p003的所有信息

(4)切換數據表(方法:table())

例如:

1 $arr = $info->table("nation")->select();<br>var_dump($arr);

 這是卻換了一張nation表:

(5)選擇操作的字段(方法:field())

例如:

1 $arr = $info->field("name,sex,birthday")->select();<br>var_dump($arr);

  查詢字段是:姓名、性別和生日的字段

(6)對數據進行排序(方法:order())

例如:

1 2 $arr = $info->order("code desc")->select(); var_dump($arr);

  這是對code進行降序排列

(7)分頁查詢數據(方法:limit()和page())

例如:limit()

1 2 $arr = $info->limit("2,2")->select(); var_dump($arr);

  這是顯示的第2頁的內容:

例如:page()

1 2 $arr = $info->page("2,2")->select(); var_dump($arr);

  這個也是顯示的第2頁的內容:

注意:

limit()和page()的不同之處:后者的參數是直接顯示“第幾頁”,“幾條”

?

(8)對數據進行分組(方法:table())

例如:

1 2 $arr = $info->table("car")->field("max(price)")->group("brand")->select(); var_dump($arr);

  這是查詢的car表中的最大價格,并且根據brand的字段進行分組

例如:

1 2 $arr = $info->table("car")->field("max(price)")->group("brand")->having("max(price)>60")->select(); var_dump($arr);

  這是上面的那個查詢,但是加了一個條件就是價格大于60的

(9)鏈接查詢數據庫(方法:join())

例如:

1 2 $arr = $info->field("info.code as '代號', info.name as '姓名',nation.name as '民族'")->join("nation on info.nation=nation.code")->select(); var_dump($arr);

  這是鏈接查詢的兩張表(漢語的地方最后用字符,因為后面要用到他的

(10)去重(distinct())

例如:

1 2 $arr = $info->table("car")->distinct(true)->field("brand")->select(); var_dump($arr);

  這是查詢的數據庫中重復的字段

到此,就是關于怎么連接數據庫和各種查詢數據庫中的數據,這是基本操作,下面就是對數據的添加、修改、刪除操作了

?

四、對數據表添加數據(方法:add())

(1)上一篇已經講過鏈接數據庫了,繼續進行對數據庫的操作,還是用控制器文件中的HomeController.class文件

看下數據庫表中的現有數據,然后在進行添加數據

添加數據有三種方法

其中第一種和第二種的添加數據方法不用判斷語句,直接找到表然后進行編寫就可以

1 2 3 4 public function tianjia() { ????$n = M("nation");?? <br>  //下面就是第一種和第二種添加的方式 }?

 1.使用數組方式添加

1 2 3 4 //1.使用數組方式添加 $arr = array("Code"=>"n006","Name"=>"哈嘍");? //其中的字段名要和數據庫中的要保持一致 $n->add($arr);? //進行添加數據,方法add() ????????

 

運行一下這個方法,注意地址欄要使用正確的路徑(這是我的路徑):http://localhost/tp/index.php/Home/Home/tianjia 

看下數據庫表中是否添加了數據

?

2.AR方式

賦一下值(給字段賦值然后在添加)

1 2 3 4 //2.AP方式 $n->Code = "n007";? //賦值的方式將每個字段賦值 $n->Name = "你好"; $n->add();? //最后用添加方法的時候里面就不用寫參數了

  運行看下數據庫表中的變化

?

3.自動收集表單(最簡單的方式)

注意事項:
(1)表單中的name要和數據庫中的字段名統一
(2)多余的表單可以自動取名,只要不和數據庫字段名一樣就可以

就要考慮這個操作方法要實現什么邏輯,要是兩個邏輯

1.顯示頁面
2.添加數據

這里可以通過if判斷語句來實現:如果是空的,就顯示頁面

1 2 3 4 if(empty($_POST)) { ????$this->show();???? //顯示頁面 }

 

否則就是添加數據的代碼,一步步的來,先說顯示頁面,既然是顯示頁面就要在視圖文件夾添加顯示頁面了

  1.1.打開View文件夾,然后新建文件夾,名字和控制器的名字一樣

?

 1.2.然后在Home文件夾中新建一個顯示頁面,這里我叫的是tianjia.html,打開這個頁面,進行編寫要顯示的內容

這里我是用的表單元素來寫的顯示頁面

1 2 3 4 5 6 <form action="__ACTION__" method="post">? <!--這個中的ation屬性使用的__ACTION__(當前操作方法),也可以使用__SELF__(自身的操作方法)系統常量--><br>  <!--注意下面的name名字要和數據中的保持一致--> ????<div>代號:<input type="text" name="Code" /></div> ????<br /> ????<div>名稱:<input type="text" name="Name" /></div> ????<input type="submit" value="添加" /> </form>

  

注意:

這樣,我們訪問一下,看看是不是能夠看到這個頁面  

打開瀏覽器,在地址欄中輸入訪問方法

http://localhost/tp/index.php/Home/Home/tianjia

看下這個頁面的顯示效果

?

?

顯示頁面成功后就是添加數據的編寫了

  2.1這個就是判斷中的“否則”的語句了

1 2 3 4 5 6 else { ????$n = M("nation");? ????$n->create();?? //自動收集表單數據 ????$n->add();? //添加到數據庫中 }?????????

  

運行一下看下是不是可以自動收集表單內容

(1)第一步還沒有內容時,自然是顯示頁面了

?

?

(2)添加一下內容,數據庫表中沒有的數據,單擊提交按鈕

 ?

//先收集

$n->Name = "hhah";??? //修改名字這個吧 $n->add();?? //再添加到數據庫

看下運行效果:

先收集表單,單擊提交按鈕

?

?

?

?

五、修改數據庫中表的數據(方法:save())

其實這個和添加差不多,也是有三種方法

這里也是在HomeController.class文件中繼續編寫修改方法

1 2 3 4 5 public function xiugai() {<br>  $code = "n009";? //修改數據當然是用到的主鍵值 ????$n = M("nation");?? //因為要修改數據,所以要用到數據庫,這里調用數據   //下面就是修改的方法 }?

 (1)1.還是用if判斷一下 

?

1 2 3 4 5 6 7 if(empty($_POST)) {   $arrt = $n->find($code);?? //利用find()方式讀取一條數據,里面的參數自然就是主鍵 ??   $this->assign("shuju",$arrt);? //注入變量了,注意這里是$this不是別的   $this->show();?? //顯示頁面 }

  2.接下來就是做修改的模板頁面了,名字就叫xiugai.html吧

1 2 3 4 5 6 <form action="__ACTION__" method="post"> ????<div>代號:<input type="text" name="Code" value="{$shuju.code}"/></div>?? <!--顯示的默認值就是上面的二維數組中的shuju--> ????<br /> ????<div>名稱:<input type="text" name="Name" value="{$shuju.name}" /></div> ????<input type="submit" value="修改" /> </form>

  看下結果

?

?

(2)這個就是修改的“否則”語句了

修改也是有三種方式

1.數組方式

1 2 //1.數組方式 $n->save($_POST);? //修改方法save()

  

因為已經有了數組,所以直接調用就可以了  

2.AR方式

1 2 3 4 //2.AR方式 $n->Code = $_POST["Code"]; $n->Name = $_POST["Name"]; $n->save();

  3.自動收集表單

1 2 3 //3.自動收集表單 $n->create();?? //自動收集表單數據 $n->save();

  3.1修改一下數據試試

?

?

3.2將上面的值修改為下圖所示,然后單擊“修改”按鈕

?

?

3.3看下數據庫是不是修改了,原來是hhah,修改為:維吾爾族

?

?

?

修改成功了~~

?

六、刪除數據庫表中的數據(方法:delete())

同樣的繼續寫一個方法,這里就叫shanchu()吧

1 2 3 4 5 public function shanChu() { ????$n = M("nation"); ????$n->delete("n008");? //刪除的是n008的數據,刪除的方法:delete() }

 看下數據庫這個n008的數據

?

?

執行一下這個方法,然后看下數據庫中的數據

?

n008的這條數據已經被刪除了

?

到現在對于數據庫的修改數據就已經完事了,正常的增刪改功能就這么些內容

需要記住:注意事項

添加修改都是三種方式,還是同樣的方式(方法不同而已)

?

上面都是有關數據庫的基本操作,查詢,增刪改操作,想要操作數據庫,第一點就是要連接數據庫!!

  

?

轉載于:https://www.cnblogs.com/Liangbingbing/p/7147850.html

總結

以上是生活随笔為你收集整理的TP框架对数据库的基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。