织梦二次开发功能-织梦DedeCMS二次开发必用之数据库类操作

DedeCMS二次开发不仅可以编写DreamWeaver标签,还可以制作DreamWeaver模板。 很多时候,我们需要对DedeCMS数据库进行查询插入、删除等操作。 在进行此类操作之前,我们必须了解DedeCMS的数据库类。 广州SEO整理了DedeCMS天涯版。 本文主要讲解DedeCMS程序的dedesql类的常见用法。 希望有的朋友可以使用一下。

1、创建数据表

为了让解释更加真实,天涯版主创建了一个名为“dede_test”的表,该表有2个字段,1个id作为唯一标识,另一个name作为名称。 然后添加测试数据。 这个操作和Access或者EXCEL类似,比较简单,这里不再详细介绍。

使用如下SQL语句插入一些数据进行操作:

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.连接数据库

织梦二次开发教程_织梦二次开发功能_织梦开发手册

在对DedeCMS数据库进行操作之前,当然需要先连接数据库。 方法非常简单。 只需要将include文件夹下的common.inc.php文件引入到操作文件中即可。 您可以在网站根目录下创建test.php文件来进行相关测试操作。 在此文件中写入以下代码:


在浏览器中运行后,查看源码,会得到如下所示的代码:

这说明我们已经成功连接到数据库了,[dbHost]、[dbUser]...这些都是数据库相关的信息,也就是我们在配置文件中保存的datacommon.inc.php内容,引入了数据库类,$dsql或$db是默认创建的,所以直接导入配置文件即可。

接下来进行简单的查询操作。 按照上面的代码,我们继续编写test.php文件。 代码如下:

IsTable('dede_test')){
          //如果存在dede_test表
          //-------------------
          //|    查询一条记录 |
          //|    GetOne()     |
          //-------------------
          //        ↓
          $row = $dsql->GetOne("SELECT * FROM dede_test WHERE id = 3");
          print_r($row);
      }
?>

这里我们使用$dsql类的两个方法,IsTable()和GetOne()。 IsTable 首先判断表是否存在。 如果存在,我们将继续执行。 它返回一个布尔值。 如果存在,则否则为真。 是假的。

接下来,如果我们判断这张表是否存在,我们就会执行查询单条记录的过程,即GetOne。 从帮助文档可以知道:$arr = $db->GetOne($sql); 也就是说查询的sql语句会传回一个数组,我们运行test.php,看到如下结果:

Array
(
    [id] => 3
    [name] => 第三个喽
)

这说明我们成功查询了dede_test中id为3的表的数据,并返回了一个$row数组,该数组存储了字段值。 当然,我们可以使用 echo $row['name']; 或 $row['id'] 输出查询结果。

3、查询数据库

织梦二次开发教程_织梦开发手册_织梦二次开发功能

刚才讲了查询一条记录。 其实查询一条记录可以理解为查询我们内容页的一篇文章。 我们只获取一条记录并显示内容。 但往往我们经常遇到的是查询列表,而{dede:arclist/ }或{dede:list/}织梦二次开发功能,查询列表涉及到查询多条记录。

继续修改test.php代码:

IsTable('dede_test')){
          //如果存在dede_test表
          //-------------------
          //|    查询一条记录 |
          //|    GetOne()     |
          //-------------------
          //        ↓
          $row = $dsql->GetOne("SELECT * FROM dede_test WHERE id = 3");
          echo "查询id=3的记录:
显示结果:";           print_r($row);           //-------------------           //|    查询多条记录 |           //|    Execute()     |           //-------------------           //        ↓           echo "
查询dede_test表中的所有记录:
显示结果:
";           $sql = "SELECT * FROM dede_test";             $dsql->Execute('me',$sql);             while($arr = $dsql->GetArray('me'))             {                 echo "id = {$arr['id']} ,name = {$arr['name']}
";             }       } ?>

运行test.php,看到如下内容:

查询dede_test表中的所有记录:
显示结果:
id = 1 ,name = 测试名字1
id = 2 ,name = 这是第二个
id = 3 ,name = 第三个喽
id = 4 ,name = 第四个

这说明我们已经成功输出了dede_test表中的数据。 当然,我们主要执行的是“SELECT * FROM dede_test”,这是最简单的SQL查询语句。 当然我们也可以使用order by或者其他排序或者条件来查询。 具体可以参考sql相关内容。

织梦二次开发教程_织梦开发手册_织梦二次开发功能

同时,这里需要说明的是,除了使用$dsql->GetArray('me')将内容获取到数组中之外,还可以使用$dsql->GetObject("me")来获取内容将内容放入对象中。 不过调用方式有些不同,主要是这里通过$dbobj->fieldname来调用查询的数据:

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

4、数据库的插入、删除操作

上面我们介绍了如何使用dsql来查询数据。 主要有两种:获取单条记录和获取多条记录。 接下来我们来学习一下利用dsql的其他特性来给我们的test.php添加添加内容和删除内容的功能。 我们先来了解一下插入数据库的操作。 我们先来制作一个表格。 该表格用于提交数据名称。 表单代码如下:


用于提交数据的表单:
     名称:

这里我们使用一个隐藏域dopost来存储操作方法。 输入框名称用于存储输入的数据,然后传递到当前页面进行处理。 这时候我们需要在test.php中添加一些表单处理操作:

//-------------------
//|    表单处理过程 |
//|    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并传递给下一页进行高亮显示。 我们可以通过在编辑框中插入一条数据来测试一下,看看插入数据后的返回结果:

其实删除操作也是同样的道理。 我们只需要稍微修改一下,添加一个判断dopost操作是del,然后在显示的数据后面添加一个超链接,在get方法中传入id,最后处理即可。 以下是我们修改后的循环查询的输出的一部分织梦二次开发功能,并进行了以下修改:

while($dbobj = $dsql->GetObject('me'))
{
    if($id==$dbobj->id){
      //如果传递的id值和查询值相同,则高亮显示最后一条插入记录
        echo "id = {$dbobj->id} ,name = {$dbobj->name} id}'>[删除]    
";//这里增加了一个删除的超链接
    }else{
        echo "id = {$dbobj->id} ,name = {$dbobj->name} id}">[删除]
";
    }
}
//下面是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数据库操作的整个流程。 有不明白的地方可以查看天涯版主的原文。 原文地址如下:。