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数据库操作的整个流程。 有不明白的地方可以查看天涯版主的原文。 原文地址如下:。