|
主题:SQL标签支持往SQL语句的in传逗号隔开的参数修改方法 [收藏主题] | 转到: |
至今为止,sql标签无法给类似下面语句的in里传多个参数 select top 10 id,title from ks_article where tid in({$Param(0)}) order by id desc 原因是,科汛的sql标签,如果传多个参数时,本身就是用逗号隔开的,如 {SQL_标签名称(参数1,参数2...,参数n)} 下面我给大家修改思路,就是我们如果要传带逗号的参数,那么我们用其它的字符替换,等到sql语句解释时,再替换回来,如下调用方式。 {SQL_标签名称('20097062465721'|'20097082279507',参数2,...,参数n) 接下来我们就动手操作,以9.0版本为例说明: 第一步: 打开ks_cls/kesion.label.sqlcls.asp,找到183行 UserParamArr = Split(Replace(Replace(Replace(Replace(SqlLabel,LabelName&"(",""),")}",""),"""",""),"'",""),",") 改为 UserParamArr = Split(Replace(Replace(Replace(SqlLabel,LabelName&"(",""),")}",""),"""",""),",") 这个原来过滤了单引号了,由于我们可能在使用sql in时,传的参数可能是字符型的,必须带有单引号,特别是科汛的主表的栏目ID都是字符型的,参数都必须带单引号的,如 select top 10 id,title from ks_article where tid in('20097062465721','20097082279507') order by id desc 第二步: 同样这个文件里,我们找到214行 FunctionSQL = Replace(FunctionSQL,"{$Param("&I&")}",UserParamArr(I),1,-1,1) 改为 FunctionSQL = Replace(FunctionSQL,"{$Param("&I&")}",Replace(UserParamArr(I),"|",","),1,-1,1) 第三步: 这样前台的标签解释就修改完成了,接下来打开admin/indclue/LabelSQL.asp 找到1624行 function ClearParam(byval SqlStr) 直接将以上代码替换为 function ClearParam(byval SqlStr) 经过上面三步修改,你的sql标签可以使用带逗号的参数的了。 以下应用实例。 我们可以根据sql标签调用指定几个栏目的最新文章,如sql语句 select top 10 id,title from ks_article where tid in({$Param(0)}) order by id desc 模板里调用 {SQL_标签名称('20097062465721'|'20097082279507'|'20093308484295') 再比如,调用指定几个会员的用户信息 sql语句 select userid,username,realname from ks_user where userid in({$Param(0)}) order by userid 模板里调用 {SQL_标签名称(2|3|4)} |
|
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
zhang02140 发表于:2013/1/14 11:11:36 | 只看该作者 查看该作者主题
报纸
|
|
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
支持(0) | 反对(0) 顶端 底部 |
<上一主题 | 下一主题 > |