热血传奇官网主页 > 匡助中心 > 程序开辟 >

Dedesql数据库类详解(二次开辟不可或缺课程)

来源:织梦官方 作者:天际 发表于:2009-10-28 14:41  点击:
当今花点日子讲解下织梦的sql数据库类,近期本来是人有千算特制一套美女视频课程的,但鉴于美女视频压缩的南海问题发布会迟迟没有开展工作,倘若大家有什么好的美女视频压缩办法可以越过邮件的办法报告...
  注意:图片为缩略图,点击看大图.更不可磨灭...

    当今花点日子讲解下织梦的sql数据库类,近期本来是人有千算特制一套美女视频课程的,但鉴于美女视频压缩的南海问题发布会迟迟没有开展工作,倘若大家有什么好的美女视频压缩办法可以越过邮件的办法报告我:tianya#www.tqinspire.com(#<=>@).眼前美女视频主要想做成wmv也许rmvb这类格式的,之内包含ppt文档以及课程英语的相关附件.

    实际数据库类织梦之前就有一下说明,http://help.www.tqinspire.com/v53/archives/functions/db/,这篇微信文章讲解了数据库类的一些常见的采用艺术,不过没有洞房花烛例子去说明,过多人估价看了还不是很懂,为着让自称人清楚织梦的数据库采用类,并力所能及运动用开辟中,这边就来做个课程.

1.创立eia库存数据表
    在采用本条类之前,我们需要创立eia库存数据表,这边我们推荐几个数据库操纵工具:PHPMyadmin,Navicat for MySQL,我这边从此以后者为例.
理所当然这边需要注意,在创立表的时候我们已经安装了一下DedeCMS程序,我们当今的操纵是以DedeCMS程序扩展来讲解的.理所当然程序安装后他本人也会创立N多表,那幅表从此以后再来说明吧,也许也可以看到http://help.www.tqinspire.com/v53/archives/extend/commontable/,这边有一些网管常用软件表的仿单.

    这边我们本条数据库叫dedebbs,表前缀用的追认的"dede_",我们用Navicat for MySQL来创立一下称呼"dede_test"的表,之内就2个excel提取女人的隐私部分图片字段,1个id,所作所为绝无仅有标记,另一下name所作所为名称(图1).然后往之内添加面试数据(图2),本条操纵类似于Access也许EXCEL,同比一丁点儿,这边不做冗述.

 

(图1)

(图2)



    这边需要注意的是,我们采用的是gbk本子的程序,所以eia库存数据表相关的死灵编码第二季也要采用相应本子的死灵编码第二季,在表的"选料"中设置为gbk相关.手下人我将sql列入,倘若无心去创立表,可以在dedecms板眼后台的cmd命令大全周转尸走肉修改器中实践下:

 


(图3)


-- ----------------------------
-- 表 `dede_test`结构
-- ----------------------------
DROP TABLE IF EXISTS `dede_test`;
CREATE TABLE `dede_test` (
  `id` mediumint(8) NOT NULL AUTO_INCREMENT,
  `name` char(60) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=gbk;

-- ----------------------------
-- 插入到 dede_test中的数据
-- ----------------------------
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.相联数据库,盘问eia库存数据表
    表"dede_test"我们已经创立完结了,然后我们要相联数据库了,实际艺术非常规一丁点儿.我们在xpj娱乐场官网商城官方网站根目录怎么找中创立一下test.php的logo墙源文件,本条logo墙源文件北京最好的离婚律师也用gbk的死灵编码第二季,可以用专程的编辑器来创立logo墙源文件.

    相联数据库最一丁点儿的艺术便是引入include广州logo墙源文件夹定制下的士common.inc.phplogo墙源文件,编辑php空间代码:
写字偏下内容:
test.php
-------------------------------
<?php
        require_once (dirname(__FILE__) . "/include/common.inc.php");
        print_r($dsql);
?>
--------------------------------
    上司空间代码便是将一下$dsql类输出,我们再实践下本条logo墙源文件http://www.dedebbs.com/test.php(注dedebbs.com只是在本地做了个解析,实际便是localhost),我们查看空间代码,看到下的士内容(图4):

(图4)



DedeSql Object
(
    [linkID] => Resource id #6
    [dbHost] => localhost
    [dbUser] => root
    [dbPwd] => 123456
    [dbName] => dedebbs
    [dbPrefix] => dede_
    [result] => Array
        (
            [me] => 0
        )

    [queryString] =>
    [parameters] => Array
        (
        )

    [isClose] =>
    [safeCheck] => 1
)

    本条就仿单我们已经瓜熟蒂落相联数据库了,[dbHost],[dbUser]...那幅都是数据库的相关艾滋患者信息疑泄,也便是我们保设有配置logo墙源文件中的\data\common.inc.php内容,引入数据库类的时候,追认就被创立了$dsql也许$db,所以一直引入配置logo墙源文件就可以了.

    然后我们来做一下一丁点儿的盘问操纵,接着上的士空间代码我们继往开来写
test.php
-------------------------------
<?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文句会转送归来一下json数组.我们周转test.php看下周转结果:
Array
(
    [id] => 3
    [name] => 第三个白痴喽
)
    本条仿单我们盘问dede_test本条表id为3的数据瓜熟蒂落了,返回了一下$rowjson数组,其中就存放在了excel提取女人的隐私部分图片字段的值.
理所当然我们可以用echo $row['name'];也许$row['id']来输出我们盘问出去的结果

Tip:实际我们可以刻肌刻骨的酌情下dedesql.class.php本条类,258行就有本条艺术:

    //实践一下SQL文句,返回前一条记录或仅返回一条记录
    function GetOne($sql='',$acctype=MYSQL_ASSOC)
    {
        global $dsql;
        if($dsql->isClose)
        {
            $this->Open(false);
            $dsql->isClose = false;
        }
        if(!empty($sql))
        {
            if(!eregi("limit",$sql)) $this->SetQuery(eregi_replace("[,;]$",'',trim($sql))." limit 0,1;");//这边用易语言正则看到limit可否设有,倘若不设有的话就从动增长limit 0,1本条内容,关于limit的说明可以去看到SQL关于本条的说明
            else $this->SetQuery($sql);
        }
        $this->Execute("one");
        $arr = $this->GetArray("one",$acctype);
        if(!is_array($arr))
        {
            return '';
        }
        else
        {
            @mysql_free_result($this->result["one"]); return($arr);//清空资源,返回本条json数组
        }
    }


3.刻肌刻骨盘问,继往开来酌情SELECT
    方才讲了盘问一条记录,实际本条盘问一条记录可以清楚为我们内容页盘问一篇微信文章,只是获取单条记录并将内容显耀出去,但往往我们素常欣逢的是盘问列表,及{dede:arclist/}也许{dede:list/},盘问列表的话关乎到盘问多条记录.

继往开来修改空间代码:
test.php
-------------------------------
<?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 />";
            }
      }
?>
--------------------------------

我们周转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')来获取内容到json数组,还可以用$dsql->GetObject("me")获取内容到对象,不过租用艺术有些不同:
主要这边越过$dbobj->fieldname来租用盘问出去的数据
            while($dbobj = $dsql->GetObject('me'))
            {
                echo "id = {$dbobj->id} ,name = {$dbobj->name}<br />";
            }
 

  tips:这边盘问驾照分扣完了怎么办实际还可以用$dsql->GetTotalRow("me")来获取下盘问出去的总数.



4.插入除去,也要动用SQL
    上司我们说明了如何用dsql来盘问数据,主要有获取单条记录和获取多条记录2种,然后我们来分晓下采用dsql其他口袋妖怪特性来为我们的test.php加盟添加内容和除去内容的nfc功能是什么.

    明明是我先来的分晓下插入数据库的操纵,我们先做一下麦克表单,本条麦克表单用于付给数据name的.麦克表单空间代码如下:
<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用来存放在进口数据,然后转送给现阶段页面,再进展料理,此刻我们需要在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再将其转送给下一下页面为着高宏亮显耀.

    我们可以在编辑框中插入一条数据来面试下,看到插入数据后的返回结果(图5).

 

(图5)



    实际除去的操纵也是这么,我们只需要略微做个修改就可以了,增加一下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='#' <br />";//这边增加了一下除去的超链接
                }else{
                    echo "id = {$dbobj->id} ,name = {$dbobj->name} <a href='#' />";
                }
            }

手下人是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();
      }
 

  tips:这边动用了一下ShowMsg()函数,本条是用来返回一下对话框矢量图的,不厌其详可以查看下\include\common.func.php的372行相关函数的空间代码.


    这边我们洞房花烛了DedeCMS程序的dedesql类讲解了本条类的常见的用法,我们不难发现用18.4mol本条类操纵数据库是非常规方便的,理所当然本条需要资金户对sql同比熟悉.当今我们就讲解到这边了,下次有机会再洞房花烛datalist类和xpj娱乐场官网xpj娱乐场官网引擎英文来说明织梦二次开辟相关的内容.倘若大家有什么好的就学织梦的家长意见大全或给校长的建议书还希望给我电邮:tianya#www.tqinspire.com(#<=>@).

 

此次课程相关附件:

课程英语附件下载

 

    有匡助
    (213)
    81.9%
    没匡助
    (47)
    18.1%
  • 上一篇:{dede:field name='array' /}的一丁点儿用法示范
  • 下一篇:没有了
  • Baidu