我正在为我的桌子创建一个INSERT Starement。直到现在一切顺利,我已经能够创建插入声明。只有问题左边是:它在每条记录结束后显示一个尾随逗号。你们可以看看我在这里做的那些混乱
<cfset listcount = getQueryColumns(insertData)>
<cfset counter = 1>
<cfloop query="insertData">
<cfoutput>
INSERT INTO `mytable` (#listcount#)
VALUES(
<cfloop index="col" list="#listcount#">'#insertData[col][currentRow]#'
<cfif counter LT insertData.recordcount>,</cfif>
</cfloop>);<br><br>
</cfoutput>
<cfset counter++>
</cfloop>
答案 0 :(得分:1)
您的错误是由于您在外循环而不是内循环中递增计数器。
答案 1 :(得分:0)
编辑:请参阅我最近的回答。我将这一个留在原处,因为这些评论对诊断很有用。
我认为Dan Bracuk对你的计数器增量是正确的。但是,如果您使用<cfif >
中的list
属性,则可以简化代码并完全避免使用<cfqueryparam >
语句。例如:
<cfqueryparam value="#NAME_OF_LIST#" list="yes" >
默认情况下,这会在您将列表值发送到数据库之前使用逗号。
答案 2 :(得分:0)
我想我已经明白了。我相信这就是你所需要的:
<cfset listcount = getQueryColumns(insertData)>
<cfloop query="insertData">
<cfset counter = 1>
<cfoutput>
INSERT INTO `mytable` (#listcount#)
VALUES(
<cfloop index="col" list="#listcount#">'#insertData[col][currentRow]#'
<cfif counter LT listcount>,</cfif>
<cfset counter++>
</cfloop>);<br><br>
</cfoutput>
</cfloop>
我改变的是:
<cfset counter++>
移到了内环中。我还在外部循环中移动<cfset counter = 1>
,因为它需要通过连续的INSERT
语句重新初始化。<cfif counter LT insertData.recordcount>
更改为<cfif counter LT listcount>
,因为您不想迭代记录计数(这就是为什么您的逗号停止显示在优先级之后,这是第8个字段)。相反,您希望迭代列数。