插入第一个id后为什么我的cfloop会停止?

时间:2015-12-08 23:20:55

标签: mysql coldfusion insert

我创建了cfloop,它遍历我在循环之上创建的查询。在循环内部,我有另一个定义值的循环,然后使用insert语句进行cfquery。我尝试在数据库中插入记录之前测试了我的循环,一切看起来都不错。在我尝试应用它来插入我的记录后,我的插入语句在插入我的第一个记录后终止。以下是我的代码示例:

<cfloop query="qryRecords">
    <cfloop condition="TimeStart LTE meetingLength">
        <cfset TimeEnd = dateAdd("n", arguments.meeting, TimeStart)>
        <cfquery name="addRecords" datasource="test">
            Insert Into(Date,Name,Location)
            Values(<cfqueryparam cfsqltype="cf_sql_date" value="#arguments.date#">,
                    <cfqueryparam cfsqltype="cf_sql_char" value="#Name#">,
                    <cfqueryparam cfsqltype="cf_sql_time" value="#Location#">);
        </cfquery>
        <cfset TimeStart = dateAdd("n", arguments.meeting, TimeStart)>          
    </cfloop>
</cfloop>

在我的qryRecords中,我有40多条记录,我应该插入多个时间记录。我的插入仅为第一个记录执行此操作并停止。就像我上面提到的那样,我尝试使用以下代码在屏幕上输出:

<cfloop query="qryRecords">
    <cfloop from="#test.Stime#" to="#test.Etime#" index="i" step="#CreateTimeSpan(0,0,test.meetingLeng,0)#">
                <cfset TimeEnd = dateAdd("n", test.meetingLeng, i)>
                    <tr>
                        <td>(#ID#) #timeFormat(TimeStart, "hh:mm tt")# - #timeFormat(TimeEnd, "hh:mm tt")#</td>
                    </tr>
                <cfset TimeStart = dateAdd("n", test.meetingLeng, i)>           
            </cfloop>       
</cfloop>

我测试此代码后的输出如下所示:

    (3) 08:30 AM - 08:40 AM
    (3) 08:40 AM - 08:50 AM
    (3) 08:50 AM - 09:00 AM
    (3) 09:00 AM - 09:10 AM
    (3) 09:10 AM - 09:20 AM
    (3) 09:20 AM - 09:30 AM
    (3) 09:30 AM - 09:40 AM
   *(12) 09:40 AM - 08:40 AM
    (12) 08:40 AM - 08:50 AM
    (12) 08:50 AM - 09:00 AM
    (12) 09:00 AM - 09:10 AM
    (12) 09:10 AM - 09:20 AM
    (12) 09:20 AM - 09:30 AM
    (12) 09:30 AM - 09:40 AM
   *(23) 09:40 AM - 08:40 AM
    (23) 08:40 AM - 08:50 AM
    .......... so on.

我看不出我的Insert查询有什么问题,以及为什么在db中只插入一个记录序列后停止。如果有人能在我的代码中看到我犯错的地方,请告诉我。

1 个答案:

答案 0 :(得分:2)

如果qryRecords不包含TimeStart列,则需要在2个打开的cfloop标记(btwn <cfloop query="qryRecords"><cfloop condition="TimeStart LTE meetingLength">)之间重置TimeStart。此外,cfloop条件应该是比较TimeStart w /最后一个插槽的开始时间(而不是meetingLength分钟)。