海纳百客

海纳百客

DX 模板 数据库SQL循环嵌套调用

吃瓜阿阳

友情提示点击顶部放大镜 可以使用站内搜索 记住我们的地址 www.hainabaike.com

<!--{eval $slides = DB::fetch_all("SELECT id,title,street_id,add_time,type_id,xm,tel,cate_id,model_id FROM `pre_tom_tongcheng` where model_id=4 order by add_time desc limit 0,10");}-->
<!--{loop $slides $slide}-->
<!--{eval  $city = DB::result(DB::query("SELECT name FROM `pre_tom_tongcheng_district` WHERE id = '$slide[street_id]'"));}-->
<!--{eval  $type_id = DB::result(DB::query("SELECT name FROM `pre_tom_tongcheng_model_type` WHERE id = '$slide[type_id]'"));}-->
<li class="gc6"><a href="/plugin.php?id=tom_tongcheng&site=1&mod=list&model_id=$slide[model_id]&street_id=$slide[street_id]"  target="_blank" class="w60 c_link"> $city</a>   <a href="/plugin.php?id=tom_tongcheng&site=1&mod=view&xxid=$slide[id]"  target="_blank" class="gc3 ml5 mr5 w300">$slide[title]</a><a href="/plugin.php?id=tom_tongcheng&site=1&mod=list&model_id=$slide[model_id]&type_id=$slide[type_id]"  target="_blank" class="w60 c_link">$type_id</a><span class="w50 gc9 y"><!--{echo date('m-d', $slide[add_time]);}--></span></li>
<!--{/loop}-->	

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(别名, 方法)排序

注意事项:所有数据在插入数据库之前,均需要进行addslashes()处理,以免特殊字符未经转义在插入数据库的时候出现错误。Discuz!中所有通过 GET, POST, FILE,取得的变量默认情况下已经使用了addslashes()进行了转义,不必重复进行。如果数据处理必要(例如用于直接显示),可以使用 stripslashes() 恢复,但数据在插入数据库之前必须再次进行转义。缓存文件中,一般对缓存数据的值采用 addcslashes($string, ''\')进行转义。

最常见的查询数据库举例:
获取单条数据:
$rs = DB::fetch_first("SELECT * FROM ".DB::table('common_member')." WHERE uid=1");
这里获取的是UID为1的用户的数据,但是discuz内还有一个getuserbyuid可以获取用户数据
获取多条数据:
$rs = DB::fetch_all("SELECT * FROM " .DB::table('common_member')." WHERE uid in(1,2,3,4,5,6)");
这里获取的是UID为1 2 3 4 5 6的用户的信息

插入数据讲解
调用方式:DB::insert()
说明:关于是否是否。只要值为1就是 是,否就直接无视或者留空
举例:
首先是存在一个表名为pre_test
表内有以下字段:id(递增) name uid 字段类型就别管了
if(DB::insert('test',array('id'=>NULL,'name'=>'me','uid'=>1))) showmessage("数据插入成功");
说明:这边的数组的键名就是数据表中的字段名,键值就是插入的对应字段的值

DB::fetch_all('SELECT * FROM %t WHERE panel=%d', array($this->_table, $panel), 'uid');
DB::fetch_all('SELECT * FROM %t WHERE uid=%d ORDER BY dateline DESC', array($this->_table, $uid), 'bid') : array();

注:DZ中%号会当做参数,需要你传入,首先第一个你可以使用DB::table($this->_table)代替,第二个你可以用实实在在的表明,第三个的话你可以吧数值计算出来后填进去,这样的话应该就不会出现问题了。

转载于:http://blog.sina.com.cn/s/blog_0ee72b370102v5i1.html


更多参考:http://wiki.blueidea.com/index.php?title=Discuz!X/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C%E6%96%B9%E6%B3%95

< !--{/loop}-->


    标签:

    发布评论 条评论)

    评论列表

    关于本站

    本网站部分文/图来源于网友、会员分享及互联网,转载目的在于传递更多信息及用于网络分享,并不意味着本网站赞同其观点或证实其内容的真实性,我们不对其科学性、严肃性等作任何形式的保证。如有侵权请及时联系。本网站将在第一时间及时删除。
    Copyright © 2024 本站由 DedeBIZ强力驱动
    本站勉强安全运行了鲁ICP备11035712号-5鲁ICP备11035712号-5鲁公网安备 37082602000070号鲁公网安备 37082602000070号

    联系我们

    合作或咨询可通过如下方式:

    QQ:896388138

    邮箱:hainabaike@qq.com

    微信:hnbk168

    关注我们

    海纳百客二维码