列表格式显示
广告招商中...... 联系方式!
私信 +好友
C对象,可以有效的利用缓存,数据获得都统一在 class/table 目录下,好处是所有的查询都集中和复用。方便维护和升级。默认的T方法有以下获得数据方式。每个数据表还需要看具体的表数据定义函数。
一、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.添加数据DB::insert
$uid=empty($_POST['uid']) ? "" : $_POST['uid'];
$username=empty($_POST['username']) ? "" : $_POST['username'];
$display_type=empty($_POST['display_type']) ? "" : $_POST['display_type'];
$filename=empty($_POST['filename']) ? "" : $_POST['filename'];
$details=empty($_POST['details']) ? "" : $_POST['details'];
$videoname=empty($_POST['videoname']) ? "" : $_POST['videoname'];
//$sql="insert into pre_home_video(uid,display_type,filename,default) values('$uid','$display_type','$filename','$default')";
//$query = DB::query($sql);
if(!empty($_POST['uid']) && !empty($_POST['display_type']) && !empty($_POST['display_type'] ))
{
$count = DB::result(DB::query("select uid from pre_common_member where uid= $uid"), 0);
if($count)
$arr=array();
$arr['uid'] = $uid;
$arr['username'] = $username;
$arr['display_type'] = $display_type;
$arr['filename'] = $filename;
$arr['details'] = $details;
$arr['videoname'] = $videoname;
if(!file_exists("data/video/{$uid}")){
mkdir("data/video/{$uid}", 0700);
}
if(!file_exists("data/video/{$uid}/cover")){
mkdir("data/video/{$uid}/cover", 0700);
$count1=DB::insert('home_video',$arr);
if($count1)
echo("<script type='text/javascript'>alert('添加成功');window.location = \"admin.php?action=video\";</script>");
else
echo("<script type='text/javascript'>alert('添加失败,该用户不存在');</script>");
更新
$id = $_GET['id'] ? $_GET['id'] : 0;
$query = DB::query("select * from ".DB::table('home_hall')." where id=$id");
if($query){
$data = DB::fetch($query);
if($type == 'gold'){
if($op == 'add'){
$data['isgold'] = 1;
}elseif($op = 'cancle'){
$data['isgold'] = 0;
DB::update('home_hall', array('isgold'=>$data['isgold']),array('id'=> $id));
}elseif($type == 'index'){
$data['isindex'] = 1;
$data['isindex'] = 0;
DB::update('home_hall', array('isindex'=>$data['isindex']),array('id'=> $id));
}else{
echo '没有此展厅';
3.查询,返回结果集
$perpage = 25;
$start = ($page-1)*$perpage;
$mpurl = ADMINSCRIPT.'?action=goldhall';
$count = DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('home_hall')), 0);
if($count){
$query = DB::query("SELECT * FROM ".DB::table('home_hall')." limit $start, $perpage");
while ($value = DB::fetch($query)) {
$list[] = $value;
$multipage = multi($count, $perpage, $page, $mpurl);
echo '<table width="100%" border=1>';
echo '<tr><td>用户id</td><td>展厅名</td><td>展厅级别</td><td>联系电话</td><td>操作</td><td>操作</td></tr>';
foreach ($list as $k => $v){
echo "<tr>";
echo "<td>{$v['uid']}</td>";
echo "<td>{$v['hallname']}</td>";
echo $v['isgold'] ? "<td>金牌</td>" : "<td>普通</td>";
echo "<td>{$v['telephone']}</td>";
if($v['isgold'] == 1){
echo "<td><a href='admin.php?action=goldhall&id={$v['id']}&type=gold&op=cancle'>取消金牌展厅</a></td>";
echo "<td><a href='admin.php?action=goldhall&id={$v['id']}&type=gold&op=add'>升级</a></td>";
if($v['isindex'] == 1){
echo "<td><a href='admin.php?action=goldhall&id={$v['id']}&type=index&op=cancle'>取消首页推荐</a></td>";
echo "<td><a href='admin.php?action=goldhall&id={$v['id']}&type=index&op=add'>首页推荐</a></td>";
echo "</tr>";
echo '</table>';
if($multipage){
echo $multipage;
//删除
if($_GET['op'] == 'delete'){
if($gid){ //还要删除文件
DB::delete('saige_geku', array('id' => $gid));
DB::delete('saige_gekufield', array('gid' => $gid));
DB::delete('saige_gkcomment', array('gid' => $gid));
本页Html网址:/htmlsoft/619517.html
本页aspx网址:/soft.aspx?id=619517&bianhao=202504171114422313_32421&kind1=&kind2=
最后访问时间:
上一篇:在Discuz论坛中,金钱(金币) discuz如何修改积分
下一篇:Discuz下新建一个自定义页面
增加