织梦cmsDedeCMS二次开发设计必用之数据信息库类实

INSERT INTO `dede_test` VALUES ( 2 ,  它是第二个 INSERT INTO `dede_test` VALUES ( 3 ,  第三个喽 INSERT INTO `dede_test` VALUES ( 4 ,  第四个 2.联接数据信息库

在对织梦cmsDedeCMS的数据信息库开展实际操作以前,自然是先联接数据信息库了,mon.inc.php文档就可以。能够在网站网站根目录中建立一个test.php的文档来开展有关的检测实际操作,在这里个文档中载入以下的编码:

 ?php
 require_once (dirname(__FILE__) .  /mon.inc.php 
 print_r($dsql);
? 

在访问器中运作以后,查询源码便可以获得以下图所显示的编码:

织梦数据库操作结果1

这一便说明大家早已取得成功联接数据信息库了,[dbHost],[dbUser]...这种全是数据信息库的有关信息内容,mon.inc.php內容,引进数据信息库类的情况下,默认设置就被建立了$dsql或是$db,因此立即引进配备文档便可以了。

接下去做一个简易的查寻实际操作,然后上边的编码大家再次写test.php文档,编码以下:

 ?php
 require_once (dirname(__FILE__) .  /mon.inc.php 
 if($dsql- IsTable( dede_test )){
 //假如存有dede_test表
 //-------------------
 //| 查寻一条纪录 |
 //| GetOne() |
 //-------------------
 //  darr;
 $row = $dsql- GetOne( SELECT * FROM dede_test WHERE id = 3 
 print_r($row);
 }
? 

这儿大家用了$dsql类的两个方式,IsTable()及其GetOne(),IsTable先来分辨这一表是不是存有,假如存有大家就再次实行,他回到的是一个bool值,假如存有为true不然就为false。

接下去分辨假如有这一表存有,则大家就实行查寻一条纪录的这一全过程,即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编码:

 ?php
 require_once (dirname(__FILE__) .  /mon.inc.php 
 if($dsql- IsTable( dede_test )){
 //假如存有dede_test表
 //-------------------
 //| 查寻一条纪录 |
 //| GetOne() |
 //-------------------
 //  darr;
 $row = $dsql- GetOne( SELECT * FROM dede_test WHERE id = 3 
 echo  查寻id=3的纪录: br / 显示信息結果: 
 print_r($row);
 //-------------------
 //| 查寻好几条纪录 |
 //| Execute() |
 //-------------------
 //  darr;
 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 / 
 }
 }
? 

运作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} br / 
 }
4.插进删掉实际操作数据信息库

上边大家详细介绍了怎样用dsql来查寻数据信息,关键有获得一条纪录和获得好几条纪录2种,接下去大家来啦解下应用dsql别的特点来为大家的test.php添加加上內容和删掉內容的作用。先来啦解下插进数据信息库的实际操作,大家先做一个表格,这一表格用以递交数据信息name的。表格编码以下:

 hr / 
用以递交数据信息的表格: br / 
 form action= test.php  type= post 
  input type= hidden  name= dopost  value=jiaocheng/"save">

这儿大家用了一个掩藏域dopost来储放实际操作方式,键入框name用于储放键入数据信息,随后传送给当今网页页面,再开展解决,这时候候大家必须在test.php里加入一部分的表格解决实际操作:

//-------------------
//| 表格解决全过程 |
//| Save() |
//-------------------
//  darr;
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方法开展传送.并最终开展解决。下边就是我们改动循环系统查寻輸出的一部分內容,有以下改动:

while($dbobj = $dsql- GetObject( me ))
 if($id==$dbobj- id){
 //假如传送的id值和查寻值同样,则高亮度显示信息最终一条插进纪录
 echo  font color= red id = {$dbobj- id} ,name = {$dbobj- name} /font   a href=jiaocheng/'test.php?dopost=del&id={$dbobj->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(); }

之上便是织梦cmsDedeCMS数据信息库类实际操作的所有全过程,假如有模糊不清白的地区,能够去查询天崖论坛版主的全文,全文的详细地址以下:help/development/2009/。