我有一个从我的数据源中提取数据的简单表单。并且想知道我是否可以在我的操作页面中提取我在表单上创建的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内部服务器错误。
答案 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或包含的文件。亲们只会写一次。可以肯定的是,它可能是不必要的数据库之旅。
与上面相同,但缓存查询。您可以将额外的行程保存到数据库中,但仍然只需编写一次。
可能还有其他选择 - 但我没想到。