使用POST在另一个页面上使用cfoutput查询?

时间:2017-07-31 16:47:48

标签: coldfusion

我有一个从我的数据源中提取数据的简单表单。并且想知道我是否可以在我的操作页面中提取我在表单上创建的cfoutput查询?

我已经找到了如何使用POST通过表单来提取单个数据。

<cfparam name = "form.masternum" default="">

<cfquery name="reloForm" datasource="test"> <!---Not going to list out my real datasource --->
   SELECT [testData], [moreTestData]
   FROM test.db
   WHERE [ORDS##] = #URL.ORDS# 
</cfquery>

<form method="post" action="emailaction.cfm">
  <label for="masternum">Master Number</label>
  <input type="text" name="masternum" value="#reloForm.MASTER#">
  <input type="submit" value="SEND">
</form>

我可以通过捕获查询变量的表单使用name属性来执行此操作。

当我点击提交按钮时,在我的操作页面上,我可以简单地调用该变量,然后输出其内容。

#form.masternum#

但是,如果我想创建另一个查询名称而不是单独输出它,而是使用cfoutput查询将其输出到另一个页面上,该怎么办?这是我尝试过的。

<cfquery name="funstuff" datasource="test">
  SELECT [ITEM], [NOTE]
  FROM fun
  WHERE [FUNORD##] = #URL.FUNORD#
</cfquery>

<cfoutput query="funstuff"> <!--- How can i capture this information on my action page? this is my question --->
  <tr>
    <td>#funstuff.ITEM#</td>
    <td>#funstuff.NOTE#</td>
  </tr>
</cfoutput>

当我尝试在我的操作页面上调用#funstuff.ITEM#时,我的页面返回500内部服务器错误。

2 个答案:

答案 0 :(得分:1)

现在,这是一个比答案更长的评论。

我不是100%确定您的问题是什么,或者如何提交该表单与您的操作页面上的其他查询相关。也许我误解了一些事情。但你可以尝试这样做,以更好地了解你所得到的“500错误”。

在cftry / cfcatch块中包装要测试的所有内容,然后转储错误。它会告诉你具体的代码有什么问题。

<cftry>
<cfquery name="funstuff" datasource="test">
  SELECT [ITEM], [NOTE]
  FROM fun
  WHERE [FUNORD##] = #URL.FUNORD#
</cfquery>

<cfoutput query="funstuff"> <!--- How can i capture this information on my action page? this is my question --->
  <tr>
    <td>#funstuff.ITEM#</td>
    <td>#funstuff.NOTE#</td>
  </tr>
</cfoutput>

<cfcatch>
<cfdump var="#cfcatch#">
</cfcatch>
</cftry>

答案 1 :(得分:0)

你有选择权,每个人都有自己的利弊。按随机顺序:

将您的查询放入会话范围。最大的专业是你只需要编写并运行一次。缺点包括RAM使用量增加以及值意外变化的可能性。

将您的查询写在可重复使用的位置。这可以是自定义标记,UDF或包含的文件。亲们只会写一次。可以肯定的是,它可能是不必要的数据库之旅。

与上面相同,但缓存查询。您可以将额外的行程保存到数据库中,但仍然只需编写一次。

可能还有其他选择 - 但我没想到。