Home >Backend Development >PHP Tutorial >%s %t %f %i %s %d %n 在discuz数据调取时该怎么用

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

WBOY
WBOYOriginal
2016-06-23 13:48:351399browse

discuz中有很多这样的符号,我的理解是他们是替代符号,这些符号好象是为了方便书写.
另外discuz  sql语句中有很多的参数,官方也没有给一个明确的说法,当然了源码我也只能看个半懂.
比如有时此类句子中,后面还跟一个array( );括号内还放了一些参数,不知这些参数是代表啥哟


回复讨论(解决方案)

您太节俭了
至少要把你看到的贴出来吧?

http://faq.comsenz.com/library/plug/construct/construct_db.htm
有文档,只是你没找到...

http://faq.comsenz.com/library/plug/construct/construct_db.htm
有文档,只是你没找到...


支持的fomat有: %tDB::table() %dintval() %saddslashes() %nin IN (1,2,3) %fsprintf('%f', $var) %i直接使用不进行处理

这些都表示啥意思呢

您太节俭了
至少要把你看到的贴出来吧?



比如这句话
DB::query("SHOW FIELDS FROM ".DB::table($r_table), 'SILENT'))

其中的$r_table和SILENT代表啥,当然$r_table是一个数据表名,但是从字段上看它是一个变量.怎么理解它呢
还比如这句话
$query = DB::query('SELECT clid FROM %t WHERE rid=%d AND fid=%d', array($this->_table, $rid, $fid));
这里的array代表什么呢,里面的参数又是啥意思呢

%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','管理员'));

%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','管理员'));


后面跟一个array代表什么意思呢?还有它里面的参数又是代表什么含义

你的php基础还有待提高啊...
后面的数组就是方法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)

你的php基础还有待提高啊...
后面的数组就是方法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)


我突然有种恍然大悟的感觉,怎么没意思到它是一个函数呢,即然是函数,里面当然是它的参数,有时感觉自己很傻,呵呵.
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn