热搜:NVER node 开发 php

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

2024-08-21 09:55:01
%s %t %f %i %s %d %n 在discuz数据调取时该怎么用

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)


我突然有种恍然大悟的感觉,怎么没意思到它是一个函数呢,即然是函数,里面当然是它的参数,有时感觉自己很傻,呵呵.