【问题标题】:Why my cfloop stop after inserting first id?为什么插入第一个 ID 后我的 cfloop 停止?
【发布时间】:2015-12-10 14:20:45
【问题描述】:

我创建了 cfloop,它通过我在循环上方创建的查询。在循环内部,我有另一个定义值的循环,然后是带有 insert 语句的 cfquery。在尝试将记录插入数据库之前,我测试了我的循环,一切看起来都很好。在我尝试应用它来插入我的记录后,我的 insert 语句在从我的 .这是我的代码示例:

<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.

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

【问题讨论】:

  • 您发布的代码尝试每次通过循环将相同的值插入到您的表中。此外,用于输出内容的代码与用于插入记录的代码具有不同的逻辑。
  • 是的,我想为不同的 ID 多次插入相同的值。该逻辑仍应与输出代码执行相同的操作。
  • 首先,你是如何使用这个:(#Id#) - #timeFormat(i, "hh:mm tt")# - #timeFormat(i, "hh:mm tt")# ??
  • 如果 qryRecords 不包含 TimeStart 列,则需要在 2 个打开的 cfloop 标记(btwn )。此外,cfloop 条件应该将 TimeStart 与最后一个 slot 的开始时间(而不是 meetingLength 分钟)进行比较。
  • 太棒了,yvw,很高兴听到!

标签: mysql coldfusion insert


【解决方案1】:

如果 qryRecords 不包含 TimeStart 列,则需要在 2 个打开的 cfloop 标记(btwn &lt;cfloop query="qryRecords"&gt;&lt;cfloop condition="TimeStart LTE meetingLength"&gt;)之间重置 TimeStart。此外,cfloop 条件应将 TimeStart 与最后一个时段的开始时间(而不是 meetingLength 分钟)进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2020-04-14
    • 2022-11-02
    • 2019-08-01
    • 2014-05-15
    • 1970-01-01
    • 2016-11-26
    相关资源
    最近更新 更多