列表格式显示

- 分类

广告招商中......
联系方式!

- 时间排序 更多...
    - 点击排序 更多...
      - 大小排序 更多...
        作者

         

        最近发布的软件 更多>>

        首页 >> >> >>discuz 数据库操作方法 发布者:Private >> 本人发布的更多软件

        广告招商中...... 联系方式!

        discuz 数据库操作方法 

        时间:2025-04-17 14:39:31      作者:Private     访问量:  
        ;开始下载地址


        discuz 数据库操作方法

        函数功能
        DB::table($tablename)获取正确带前缀的表名,转换数据库句柄
        DB::delete($tablename, 条件,条数限制)删除表中的数据
        DB::insert($tablename, 数据(数组),是否返回插入ID,是否是替换式,是否silent)插入数据操作
        DB::update($tablename, 数据(数组)条件)更新操作
        DB::fetch(查询后的资源)从结果集中取关联数组,注意如果结果中的两个或以上的列具有相同字段名,最后一列将优先。
        DB::fetch_first($sql)取查询的第一条数据fetch
        DB::fetch_all($sql)查询并fetch
        DB::result_first($sql)查询结果集的第一个字段值
        DB::query($sql)普通查询
        DB::num_rows(查询后的资源)获得记录集总条数
        DB::_execute(命令,参数)执行mysql类的命令
        DB::limit(n,n)返回限制字串
        DB::field(字段名, $pid)返回条件,如果为数组则返回 in 条件
        DB::order(别名, 方法)排序

        C对象,可以有效的利用缓存,数据获得都统一在 class/table 目录下,好处是所有的查询都集中和复用。方便维护和升级。默认的T方法有以下获得数据方式。每个数据表还需要看具体的表数据定义函数。

        函数功能
        C::t($tablename')->count()获取表所有行数
        C::t($tablename')->update(键值,$data)更新键值数据
        C::t($tablename')->delete(键值)删除键值数据
        C::t($tablename')->truncate()清空表
        C::t($tablename')->insert($data, $return_insert_id,$replace)插入数据
        C::t($tablename')->fetch_all($ids)fetch 数据,可以是单一键值或者多个键值数组
        C::t($tablename')->fetch_all_field()fetch所有的字段名表
        C::t($tablename')->range($start, $limit, $sort)fetch值域范围
        C::t($tablename')->optimize()优化表


        一、discuz数据操作之查:

        复制代码

        1、fetch_all
         DB::fetch_all(sql, $arg = array());//取出符合条件的所有数据
         sql为查询语句,$arg为绑定参数
         例:$result = DB::fetch_all('SELECT * FROM %t',array('table_name'));
         $result为二维数组
        2、fetch_first
         DB::fetch_first(sql, $arg = array());//取出符合条件的第一条数据
         例:$result = DB::fetch_first('SELECT * FROM %t ', array('table_name'));
         $result为一维数组

        复制代码

         

        二、discuz数据操作之增:

        复制代码

        DB::insert(参数一,参数二,参数三);
         /*
         参数一:table_name
         参数二:以对应数据表中的字段为key,具体数值为value组成的关联数组
         参数三:是否返回该数据的id。true则返回具体id,false则不会返回id
         */
         例:DB::insert('table_name',['name'=>'张三','age'=>'18','sex'=>'男'],true);

        复制代码

         

        三、discuz数据操作之改:

        复制代码

        DB::update(参数一,参数二,参数三);
         /*
         参数一:table_name
         参数二:以对应数据表中的字段为key,具体数值为value组成的关联数组
         参数三:修改的where条件
         */
         例:DB::update('table_name',['name'=>'张三','age'=>'19','sex'=>'男'],' id = 1 ');

        复制代码

         

        四、discuz数据操作之删:

        复制代码

         DB::delete(参数一,参数二);
         /*
         参数一:table_name
         参数二:删除的where条件
         */
         例:$sql = 'id = '.$id;
         DB::delete('table_name',$sql);

        复制代码

         

        以上是discuz的基本数据库操作。但实际开发中会对数据操作进行再封装,实际暴露的借口是用C::t()方法来进行数据操作

        具体操作在source/class/table文件夹内创建一个文件

        文件名为table_表名(注:是去掉表前缀的名字),例如:数据库中表名为pre_forum_post,那么该文件的名字为table_forum_post.php

        例:

        复制代码

        table_forum_design_list.php<?php/**
         *      [Discuz!] (C)2001-2099 Comsenz Inc.
         *      This is NOT a freeware, use is subject to license terms
         *
         *      $Id: table_forum_access.php 27777 2012-02-14 07:07:26Z zhengqingpeng $ */if(!defined('IN_DISCUZ')) {    exit('Access Denied');
        }class table_forum_design_list extends discuz_table
        {    public function __construct() {    $this->_table = 'forum_design_list';    $this->_pk    = '';
        
            parent::__construct();
            }    public function get_all() {    return DB::fetch_all('SELECT * FROM %t WHERE st != 0', array($this->_table));
            }    public function insert($data)
            {        return DB::insert($this->_table,$data,true);
            }    public function delete($id)
            {        $sql = 'id = '.$id;        return DB::delete($this->_table,$sql);
            }
        }?>//外部文件调用方式$result = C::t('forum_design_list')->get_all();$result = C::t('forum_design_list')->insert($data);$result = C::t('forum_design_list')->delete(1);

        复制代码

         

         

        根据上面代码所见,所有的直接操作数据库的操作都会写在表对应的class文件里。

        补充一点,如何执行原生sql语句。

        DB::query(sql,$arg = array());




        1. 1.添加数据DB::insert

        2. $uid=empty($_POST['uid']) ? "" : $_POST['uid'];

        3. $username=empty($_POST['username']) ? "" : $_POST['username'];

        4. $display_type=empty($_POST['display_type']) ? "" : $_POST['display_type'];

        5. $filename=empty($_POST['filename']) ? "" : $_POST['filename'];

        6. $details=empty($_POST['details']) ? "" : $_POST['details'];

        7. $videoname=empty($_POST['videoname']) ? "" : $_POST['videoname'];

        8. //$sql="insert into pre_home_video(uid,display_type,filename,default) values('$uid','$display_type','$filename','$default')";

        9. //$query = DB::query($sql);

        10. if(!empty($_POST['uid']) && !empty($_POST['display_type']) && !empty($_POST['display_type'] ))

        11. {

        12. $count = DB::result(DB::query("select uid from pre_common_member where uid= $uid"), 0);

        13. if($count)

        14. {

        15. $arr=array();

        16. $arr['uid'] = $uid;

        17. $arr['username'] = $username;

        18. $arr['display_type'] = $display_type;

        19. $arr['filename'] = $filename;

        20. $arr['details'] = $details;

        21. $arr['videoname'] = $videoname;

        22. if(!file_exists("data/video/{$uid}")){

        23. mkdir("data/video/{$uid}", 0700);

        24. }

        25. if(!file_exists("data/video/{$uid}/cover")){

        26. mkdir("data/video/{$uid}/cover", 0700);

        27. }

        28. $count1=DB::insert('home_video',$arr);

        29. if($count1)

        30. {

        31. echo("<script type='text/javascript'>alert('添加成功');window.location = \"admin.php?action=video\";</script>");


        32. }

        33. }

        34. else

        35. {

        36. echo("<script type='text/javascript'>alert('添加失败,该用户不存在');</script>");

        37. }

        38. 更新

        39. $id = $_GET['id'] ? $_GET['id'] : 0;

        40. $query = DB::query("select * from ".DB::table('home_hall')." where id=$id");

        41. if($query){

        42. $data = DB::fetch($query);

        43. if($type == 'gold'){

        44. if($op == 'add'){

        45. $data['isgold'] = 1;

        46. }elseif($op = 'cancle'){

        47. $data['isgold'] = 0;

        48. }

        49. DB::update('home_hall', array('isgold'=>$data['isgold']),array('id'=> $id));

        50. }elseif($type == 'index'){

        51. if($op == 'add'){

        52. $data['isindex'] = 1;

        53. }elseif($op = 'cancle'){

        54. $data['isindex'] = 0;

        55. }

        56. DB::update('home_hall', array('isindex'=>$data['isindex']),array('id'=> $id));

        57. }

        58. }else{

        59. echo '没有此展厅';

        60. }

        61. 3.查询,返回结果集

        62. $perpage = 25;

        63. $start = ($page-1)*$perpage;

        64. $mpurl = ADMINSCRIPT.'?action=goldhall';

        65. $count = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('home_hall')), 0);

        66. if($count){

        67. $query = DB::query("SELECT * FROM ".DB::table('home_hall')." limit $start, $perpage");

        68. while ($value = DB::fetch($query)) {

        69. $list[] = $value;

        70. }

        71. $multipage = multi($count, $perpage, $page, $mpurl);

        72. }


        73. echo '<table width="100%" border=1>';

        74. echo '<tr><td>用户id</td><td>展厅名</td><td>展厅级别</td><td>联系电话</td><td>操作</td><td>操作</td></tr>';

        75. foreach ($list as $k => $v){

        76. echo "<tr>";

        77. echo "<td>{$v['uid']}</td>";

        78. echo "<td>{$v['hallname']}</td>";

        79. echo $v['isgold'] ? "<td>金牌</td>" : "<td>普通</td>";

        80. echo "<td>{$v['telephone']}</td>";

        81. if($v['isgold'] == 1){

        82. echo "<td><a href='admin.php?action=goldhall&id={$v['id']}&type=gold&op=cancle'>取消金牌展厅</a></td>";

        83. }else{

        84. echo "<td><a href='admin.php?action=goldhall&id={$v['id']}&type=gold&op=add'>升级</a></td>";

        85. }

        86. if($v['isindex'] == 1){

        87. echo "<td><a href='admin.php?action=goldhall&id={$v['id']}&type=index&op=cancle'>取消首页推荐</a></td>";

        88. }else{

        89. echo "<td><a href='admin.php?action=goldhall&id={$v['id']}&type=index&op=add'>首页推荐</a></td>";

        90. }

        91. echo "</tr>";

        92. }

        93. echo '</table>';

        94. if($multipage){

        95. echo $multipage;

        96. }

        97. //删除

        98. if($_GET['op'] == 'delete'){

        99. if($gid){ //还要删除文件

        100. DB::delete('saige_geku', array('id' => $gid));

        101. DB::delete('saige_gekufield', array('gid' => $gid));

        102. DB::delete('saige_gkcomment', array('gid' => $gid));

        103. }


        104. }



        本页Html网址:/htmlsoft/619517.html

        本页aspx网址:/soft.aspx?id=619517&bianhao=202504171114422313_32421&kind1=&kind2=

        最后访问时间:

        上一篇:在Discuz论坛中,金钱(金币) discuz如何修改积分

        下一篇:Discuz下新建一个自定义页面

        增加   


        相关评论        新窗口打开查看评论