dedecms二次開發數據庫類詳細操作

    dedecms二次開發,要會寫織夢的標籤,會製作織夢的模板。也需要操作其數據庫。查詢、插入、刪除是三個基本操作,操作之前,先了解織夢DedeCMS的數據庫類是必須的。


1.創建數據表

    創建一個名爲"dede_test"的表,2個字段,1個id,作爲唯一標識,一個name作爲名稱。

   

    使用SQL語句插入一些數據供操作使用:

1

2

3

4

INSERT INTO `dede_test` VALUES ('1', '測試名字1');
INSERT INTO `dede_test` VALUES ('2', '這是第二個');
INSERT INTO `dede_test` VALUES ('3', '第三個嘍');
INSERT INTO `dede_test` VALUES ('4', '第四個');


 

2.如何連接數據庫?

    只需要在操作的文件中引入include文件夾下面的 common.inc.php文件即可。


    如下

1

2

3

4

<?php
        require_once (dirname(__FILE__) . "/include/common.inc.php");
        print_r($dsql);
?>

3.如何查詢數據庫   

   【1】在數據庫類中,查詢一條記錄用方法 GetOne();

    如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php
      require_once (dirname(__FILE__) . "/include/common.inc.php");
      if($dsql->IsTable('dede_test')){
          //如果存在dede_test表
          //-------------------
          //|    查詢一條記錄 |
          //|    GetOne()     |
          //-------------------
          //        ↓
          $row = $dsql->GetOne("SELECT * FROM dede_test WHERE id = 3");
          print_r($row);
      }
?>

    這裏用了$dsql類的2個方法,IsTable()以及GetOne(),IsTable先來判斷這個表是否存在,如果存在我們就繼續執行,他返回的是一個bool值,如果存在爲true否則就爲false。


    執行查詢單條記錄的這個過程,即GetOne,通過幫助文檔可以知道:$arr = $db->GetOne($sql);也就是說查詢的sql語句會傳送回來一個數組。  

    

    【2】在數據庫類中,查詢多條記錄 Execute()和GetArray()

 代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<?php
      require_once (dirname(__FILE__) . "/include/common.inc.php");
      if($dsql->IsTable('dede_test')){
          //如果存在dede_test表
          //-------------------
          //|    查詢一條記錄 |
          //|    GetOne()     |
          //-------------------
          //        ↓
          $row = $dsql->GetOne("SELECT * FROM dede_test WHERE id = 3");
          echo "查詢id=3的記錄:<br />顯示結果:";
          print_r($row);
          //-------------------
          //|    查詢多條記錄 |
          //|    Execute()     |
          //-------------------
          //        ↓
          echo "<hr />查詢dede_test表中的所有記錄:<br />顯示結果:<br />";
          $sql = "SELECT * FROM dede_test";
            $dsql->Execute('me',$sql);
            while($arr = $dsql->GetArray('me'))
            {
                echo "id = {$arr['id']} ,name = {$arr['name']}<br />";
            }
      }
?>

除了用$dsql->GetArray('me')來獲取內容到數組,還可以用$dsql->GetObject("me")獲取內容到對象,不過調用方法有些不同,主要這裏通過$dbobj->fieldname來調用查詢出來的數據:

1

2

3

4

while($dbobj = $dsql->GetObject('me'))
            {
                echo "id = {$dbobj->id} ,name = {$dbobj->name}<br />";
            }


4.插入刪除操作數據庫

    【1】插入數據庫


表單代碼如下:

1

2

3

4

5

6

7

<hr />
用於提交數據的表單:<br />
<form action="test.php" type="post">
    <input type="hidden" name="dopost" value="save">
    名稱:<input type="text" name="name" value="">
    <input name="提交" type="submit" value="提交">
</form>


用了一個隱藏域dopost來存放操作方法,輸入框name用來存放輸入數據,然後傳遞給當前頁面,再進行處理,加入部分的表單處理操作:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

//-------------------
      //|    表單處理過程 |
      //|    Save()     |
      //-------------------
      //        ↓
    empty($dopost)? "" : $dopost;
    if($dopost == "save"){
        //如果執行插入操作
        $sql = "INSERT INTO `dede_test` (`name`) VALUES ('{$name}')";
        $dsql->ExecuteNoneQuery($sql); //執行這個插入語句
        $lastInsertID = $dsql->GetLastID(); //獲取插入後的最後的ID,然後再傳給下一個頁面
        ShowMsg("成功增加一條記錄內容!","test.php?id={$lastInsertID}");
        exit();
    }

主要是一個INSERT INTO 語句,然後通過$dsql的ExecuteNoneQuery方法來執行這個操作,並且獲取插入數據最後一個id再將其傳遞給下一個頁面以便高亮顯示。


    【2】刪除操作

        刪除的操作也是如此,只需要稍微修改就可以。

        增加一個dopost操作爲del的判斷,然後在顯示數據後面增加一個超鏈接,將id以get方式進行傳遞.最後進行處理。


如下修改:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

while($dbobj = $dsql->GetObject('me'))
            {
                if($id==$dbobj->id){
                  //如果傳遞的id值和查詢值相同,則高亮顯示最後一條插入記錄
                    echo "<font
 color='red'>id = {$dbobj->id} ,name = 
{$dbobj->name}</font> <a 
href='test.php?dopost=del&id={$dbobj->id}'>[刪除]</a>    
<br />";//這裏增加了一個刪除的超鏈接
                }else{
                    echo "id
 = {$dbobj->id} ,name = {$dbobj->name} <a 
href='test.php?dopost=del&id={$dbobj->id}'>[刪除]</a><
br />";
                }
            }
      //下面是del這個post的判斷:
      empty($dopost)? "" : $dopost;
      if($dopost == "save"){
          //如果執行插入操作
          $sql = "INSERT INTO `dede_test` (`name`) VALUES ('{$name}')";
          $dsql->ExecuteNoneQuery($sql);
          $lastInsertID = $dsql->GetLastID();
          ShowMsg("成功增加一條記錄內容!","test.php?id={$lastInsertID}");
          exit();
      }elseif($dopost == "del"){
          //如果dopost爲del,則刪除數據
          $id = isset($id) && is_numeric($id) ? $id : 0;
          $sql = "DELETE FROM `dede_test` WHERE (`id`='{$id}')";
          $dsql->ExecuteNoneQuery($sql);
          ShowMsg("成功刪除一條記錄內容!","test.php");
          exit();
      }


dedecms技術論壇地址:http://www.dedecms.com/help/development/2009/1028/1076.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章