老问题着急

jiang_jiajia10 2009-03-31 09:00:40
<cffunction name="inserttable" access="public" hint="插入函数">
<cfargument name="tablename">
<cfargument name="insertsqlarr" type="struct" hint="参数集合">
<cfargument name="returnid" default="0">
<cfargument name="replace" default="0">
<cfargument name="silent" default="0">
<cfset var insertkeysql = "">
<cfset var insertvaluesql = "">
<cfset var comma = "">
<cfset var method = "">
<cfset var start="ok">
<cfloop collection="#Arguments.insertsqlarr#" item="DataItem">
<cfset insertkeysql = insertkeysql & comma & '`' & DataItem & '`'>
<cfset insertvaluesql = insertvaluesql & comma & "'" & insertsqlarr[DataItem] & "'">
<cfset comma = ", ">
</cfloop>
<!--- <cftry>--->
<cfquery datasource="Connection">
Insert into #Arguments.tablename# (#insertkeysql#) values (#preservesinglequotes(insertvaluesql)#)
</cfquery>
<!--- <cfcatch type="any">
<cfset start="error">
</cfcatch>
</cftry>--->
<cfreturn start>
</cffunction>

这个函数是好用的,但是我想把<cfqueryparam>这个标签加入到函数里,用来防止注入,请问应该怎么修改呢?我多次尝试都不可以
...全文
108 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
surge0321 2009-03-31
  • 打赏
  • 举报
回复
学习
jiang_jiajia10 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dogfish 的回复:]
写成cfc。尽量把逻辑和显示分开。
[/Quote]
恩我现在就是这样做的
还有就是我想问一下怎么刻画一个customer tag?
Dogfish 2009-03-31
  • 打赏
  • 举报
回复
写成cfc。尽量把逻辑和显示分开。
jiang_jiajia10 2009-03-31
  • 打赏
  • 举报
回复
解决了谢谢你,还有就是我想问的是。怎么做才能让coldfusion代码和页面分开写呢?
Dogfish 2009-03-31
  • 打赏
  • 举报
回复
写多了一个&。 Sorry

#comma# <cfqueryparam value="#insertsqlarr[DataItem]#" cfsqltype="cf_sql_clob">
jiang_jiajia10 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dogfish 的回复:]
从新改写。看看能不能帮你。
<cfloop collection="#Arguments.insertsqlarr#" item="DataItem">
<cfset insertkeysql = insertkeysql & comma & '`' & DataItem & '`'>
<cfset insertvaluesql = insertvaluesql & comma & "'" & insertsqlarr[DataItem] & "'">
<cfset comma = ", ">
</cfloop>
<!--- <cftry>--->
<cfquery datasource="Connection">
Insert into #Arguments.tablename# (#in…
[/Quote]
再帮我改一下
现在生成的sql语句是
Insert into TS_Parent_Class (`Parent_ClassName_Desprison`, `Parent_ClassName`) values ( & (param 1) , & (param 2) )
为什么会这样呢?
jiang_jiajia10 2009-03-31
  • 打赏
  • 举报
回复
我试验仪下看看
Dogfish 2009-03-31
  • 打赏
  • 举报
回复
从新改写。看看能不能帮你。
<cfloop collection="#Arguments.insertsqlarr#" item="DataItem">
<cfset insertkeysql = insertkeysql & comma & '`' & DataItem & '`'>
<cfset insertvaluesql = insertvaluesql & comma & "'" & insertsqlarr[DataItem] & "'">
<cfset comma = ", ">
</cfloop>
<!--- <cftry>--->
<cfquery datasource="Connection">
Insert into #Arguments.tablename# (#insertkeysql#) values
(
<cfset comma = "">
<cfloop collection="#Arguments.insertsqlarr#" item="DataItem">
#comma# & <cfqueryparam value="#insertsqlarr[DataItem]#" cfsqltype="cf_sql_clob">
<cfset comma = ", ">
</cfloop>
)
</cfquery>
jiang_jiajia10 2009-03-31
  • 打赏
  • 举报
回复
我不知道怎么修改,
insertsqlarr是个struct DataItem 是key insertsqlarr[DataItem] 是value 我需要对value过滤
jiang_jiajia10 2009-03-31
  • 打赏
  • 举报
回复
<cffunction name="inserttable" access="public" hint="插入函数">
<cfargument name="tablename">
<cfargument name="insertsqlarr" type="struct" hint="参数集合">
<cfargument name="returnid" default="0">
<cfargument name="replace" default="0">
<cfargument name="silent" default="0">
<cfset var insertkeysql = "">
<cfset var insertvaluesql = "">
<cfset var comma = "">
<cfset var method = "">
<cfset var start="ok">
<cfloop collection="#Arguments.insertsqlarr#" item="DataItem">
<cfset insertkeysql = insertkeysql & comma & '`' & DataItem & '`'>
<cfset insertvaluesql = insertvaluesql & comma & "'" & insertsqlarr[DataItem] & "'">
<cfset comma = ", ">
</cfloop>
<!--- <cftry>--->
<cfquery datasource="Connection">
Insert into #Arguments.tablename# (#insertkeysql#) values (<cfqueryparam value="#preservesinglequotes(insertvaluesql)#" cfsqltype="cf_sql_clob">)
</cfquery>
<!--- <cfcatch type="any">
<cfset start="error">
</cfcatch>
</cftry>--->
<cfreturn start>
</cffunction>
Dogfish 2009-03-31
  • 打赏
  • 举报
回复
把你修改的给我看看。那更能捉到你的意思。
jiang_jiajia10 2009-03-31
  • 打赏
  • 举报
回复
sy_binbin 2009-03-31
  • 打赏
  • 举报
回复
不会!帮你顶一下
jiang_jiajia10 2009-03-31
  • 打赏
  • 举报
回复
jiang_jiajia10 2009-03-31
  • 打赏
  • 举报
回复
insertsqlarr[DataItem] 是用户前台录入的数据
叶随风 2009-03-31
  • 打赏
  • 举报
回复
太深奥了,呵呵
Dogfish 2009-03-31
  • 打赏
  • 举报
回复
customtag是自定义tag。
1.是简单的cfm文件。
2.调用的时候是以<cf_开头
3.参数接受是attributes.var的形式。

例子如下:
dogfish.cfm
<cfparam name="attributes.abc" default="Hello">
<cfoutput>#attributes.abc#</cfoutput>

调用如下:
1.默认参数调用<cf_dogfish>
显示结果是Hello
2.传递参数调用<cf_dogfish abc="World">
显示结果是World
3.变量传递参数调用
<cfset a = "Hello World">
<cf_dogfish abc="#a#">
显示结果是Hello World

一般是放在一个固定的目录下,那个目录在coldfusion的管理界面设置为customtag目录,调用的时候,系统就会去那个目录调出那个文件。
先说这么多,还有其他的。现在应该够用的了。

[Quote=引用 14 楼 jiang_jiajia10 的回复:]
引用 13 楼 dogfish 的回复:
写成cfc。尽量把逻辑和显示分开。

恩我现在就是这样做的
还有就是我想问一下怎么刻画一个customer tag?
[/Quote]

879

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 ColdFusion
社区管理员
  • ColdFusion社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧