【问题标题】:Passing Coldfusion query result to Form将 Coldfusion 查询结果传递给 Form
【发布时间】:2021-04-05 16:03:16
【问题描述】:

我有两个 Coldfusion 模板(getdata.cfmgenerate.cfm)。除了其他任务之外,第一个模板getdata.cfm 将使用查询从数据库中检索。它将准确检索 16 行数据,每行将有 8 个字段。比如这样:

<cfquery datasource="xyz name="lista">
SELECT n1,n2,n3,n4,n5,n6,n7,n8
FROM atable
WHERE product = "abc"
ORDER BY date DESC LIMIT 16
</cfquery>

第二个模板将生成一些随机数并将它们与这 16 行进行比较。第二个模板上有一个刷新按钮来重新生成数字。这就是我希望它的工作方式。

但是,现在唯一的工作方式是在第二个模板generate.cfm 中使用数据库&lt;cfquery&gt; 这意味着每次我按刷新时,它都会访问数据库,每次都检索相同的 16 行,并生成随机数。这并不理想。因为 16 行是相同的,所以每次生成一组新的随机数时都检索它们是没有意义的。最好在第一个模板中获取它们一次,然后以某种方式将它们传递给第二个模板。这 16 组数字需要始终显示在屏幕上。需要显示匹配和不匹配的数字。

如何将整个查询结果从第一个模板传递到第二个模板,而不必通过表单将 16 个记录作为 16 个列表作为表单字段传递?这甚至可能吗?提前致谢。

【问题讨论】:

    标签: forms coldfusion coldfusion-10 cfquery cfform


    【解决方案1】:
    • 生成一组随机数。
    • 将这些数字与一组静态数据进行比较。
    • 重复。

    您需要在应用程序 (CFML) 代码中进行比较吗?您能否在单个请求中生成一组随机数并将它们作为查询的一部分发送到数据库?这样,您就可以从数据库中获取与您的数字集匹配的记录,而不是全部 16 个。

    然后每次刷新都会将新的随机数集发送到数据库,只返回相关数据。

    或者,您可以将cfquerycachedWithin 属性一起使用,以便在刷新随机数字集的同时将查询结果存储到内存中一段特定的时间。

    https://cfdocs.org/cfquery

    【讨论】:

    • 对不起,我忘了说这16组数字需要显示在第二个模板上。如果可以的话,我会尽量避免使用缓存来节省服务器的内存:)
    • 我确实需要在应用程序中进行比较并显示匹配和不匹配的结果。
    • 您可以使用 AJAX 调用获取随机数的函数,并使用 javascript 将它们与查询中的任何内容进行比较。但是,在整体方案中,简单也很有价值,这意味着查询缓存或重复的数据库调用可能不是那么糟糕。
    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    相关资源
    最近更新 更多