账号通
    

账号  

密码  

3602

查看

6

回复
主题:让你的CMS支持任意复杂的SQL语句 [收藏主题] 本贴被认定为精华 转到:  
lingye 当前离线

6

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:278 分
登录次数:10 次
注册时间:2007/3/19
最后登录:2007/4/17
lingye 发表于:2007/3/23 14:23:00   | 只看该作者 查看该作者主题 楼主 
科汛在线网校系统

科讯的SQL标签功能很强大,但是有个很大的缺点,就是无法支持复杂的SQL查询,原因就出在/admin/include/labelfunctionadd.asp页面的ClearParam函数上,这个函数科讯的本意是用来去除含有top与自定义参数的内容,并且在最后有句:ClearParam=Split(ClearParam,"where")(0),这句话的本意是去掉where条件语句,本意是好的,只是去得太草率,以至于以下的SQL语句无法执行:

select count(*) as counts,Ks_class.id as Tid,ks_class.foldername from ks_class,(select ks_gq.GQID,ks_class.TS from ks_gq,ks_class
where ks_class.TS like '%'+ks_gq.Tid+'%')as a where  a.TS like '%'+ks_class.id+'%' and ks_class.tj=2 group by ks_class.foldername,Ks_class.id

这个语句的功能是用来统计一个供求信息栏目下有几条信息用的,要求返回的值有三个:

数量、类别ID、类别名

这样的SQL语句在经过Split(ClearParam,"where")(0)后再被SqlValid函数调就完全错了,所以得改一下ClearParam函数

修改方法如下:

新增一个函数,用来执行正则替换:

  Function GetReplaceStr(Pattern,ReplaceStr,Checkstr)
  Dim Re, Rv,RetStr,Match
  dim a:a=0
  Set Re = New Regexp
  Re.Pattern = Pattern
  Re.Global = True
  Re.Ignorecase = True
  Re.Multiline = True
  Set Rv = Re.Execute(Checkstr)
  For Each Match in Rv
    a=a+1
  Next
  RetStr =RetStr&Re.replace(Checkstr,ReplaceStr)
  GetReplaceStr=RetStr
  Set Re=Nothing
 End Function

然后在ClearParam函数的末尾,把ClearParam=Split(ClearParam,"where")(0)给注释掉,添加以下三行:

   SqlStr=GetReplaceStr("(and)(.+?)(\{\$P.+?\)\})","",SqlStr)
   SqlStr=GetReplaceStr("(where)(.+?)(\{\$P.+?\)\})","",SqlStr)
   ClearParam=SqlStr

保存即可

修改有一定风险,请慎重!

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
hhflxx 当前离线

861

主题

0

广播

1

粉丝
添加关注
级别:七年级

用户积分:4349 分
登录次数:365 次
注册时间:2006/7/20
最后登录:2012/3/10
hhflxx 发表于:2007/3/23 16:51:00   | 只看该作者 查看该作者主题 沙发 
lingye
帅哥哟,在线,有人找我吗?
等级:科汛新手
文章:1
积分:232
注册:2007年3月19日
第一篇帖子就成精华看来是个人物啊
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
wlll 当前离线

236

主题

0

广播

0

粉丝
添加关注
级别:二年级

用户积分:5789 分
登录次数:263 次
注册时间:2006/10/25
最后登录:2017/2/15
wlll 发表于:2007/3/23 16:15:00   | 只看该作者 查看该作者主题 藤椅 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
wawxj1231 当前离线

53

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:1089 分
登录次数:129 次
注册时间:2006/6/13
最后登录:2008/4/6
wawxj1231 发表于:2007/3/23 16:11:00   | 只看该作者 查看该作者主题 板凳 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
金猪贺岁 当前离线

79

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:511 分
登录次数:31 次
注册时间:2007/3/1
最后登录:2007/9/7
金猪贺岁 发表于:2007/3/23 14:46:00   | 只看该作者 查看该作者主题 报纸 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
alluse 当前离线

1654

主题

0

广播

0

粉丝
添加关注
级别:高一年

用户积分:2915 分
登录次数:189 次
注册时间:2006/10/25
最后登录:2008/6/8
alluse 发表于:2007/3/23 14:35:00   | 只看该作者 查看该作者主题 地板 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
科汛官方 当前离线

47268

主题

145

广播

405

粉丝
添加关注
级别:管理员

用户积分:101604 分
登录次数:7935 次
注册时间:2006/12/7
最后登录:2023/12/14
科汛官方 发表于:2007/3/23 14:30:00   | 只看该作者 查看该作者主题 7楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.17188秒 powered by KesionCMS 9.0