discuz源码分析及使用技巧

本文深入解析DiscuzX中的数据库操作方法,包括DB::table、C::t等函数的使用技巧,以及如何在SQL语句中正确使用占位符进行参数化查询,避免SQL注入风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iscuz加载多个window.onload = function () {}事件冲突的解决方法

forum_index.php文件的分析

全方位立体式讲解DIY技巧集锦

Discuz X2二次开发之数据库操作 DB类

discuz模板语法

Discuz!X/数据库操作方法、DB::table、C::t

discuz教程:插件开发经验之如何运用 C::t 方法

dedecms调用Discuz!X2.5最新帖子和图片的方法

Discuz!全局变量详细列表,DZ论坛插件开发必备

Discuz! 全局变量 $_G

%s %t %f %i %s %d %n 在discuz数据调取时该怎么用


支持的fomat有:
 %t
DB::table()
 %d
intval()
 %s
addslashes()
 %n
in IN (1,2,3)
 %f
sprintf('%f', $var)
 %i
直接使用不进行处理

%t:表名占位符,DB::fetch_first("SELECT * FROM %t",array('common_member')); 
%d:数值占位符,DB::fetch_first("SELECT * FROM %t WHERE uid=%d",array('common_member',1));会自动执行intval 
%s:字符占位符,DB::fetch_first("SELECT * FROM %t WHERE username=%s",array('common_member','管理员'));会自动执行addslashes,转义特殊字符 
%n:DB::fetch_all("SELECT * FROM %t WHERE uid IN(%n)",array('common_member',array(1,2,3))); 
%f:同%d类似,只是浮点数,很少用 
%i:原样输出,DB::fetch_first("SELECT * FROM %t WHERE username='%i'",array('common_member','管理员'));

后面的数组就是方法fetch_first的参数,array里面的值和前面sql语句中的%t,%d..之类的占位符是一一对应的 
如:DB::fetch_first("SELECT * FROM %t WHERE uid=%d",array('common_member',1)); 
%t=pre_common_member(会默认执行DB::table加上表前缀) 
%d=1(会默认执行intval)

转载于:https://my.oschina.net/u/2294923/blog/667802

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值