我是一只“老狗”,在这种情况下基本上都是自学成才,通常可以使事情发挥作用(原始性和复杂性),但这是我真正受到阻碍的第一件事。
我不想给每个人带来很多东西来试图解释,但是,这里可能是一个更好的解释和例子:
(@ Leigh - 感谢您的时间和帮助!) - 查询是动态的,因为我希望拥有的是一个单独的“通用”页面组合(表单页面和附带的操作页面),用于编辑多个不同(但非常相似)的记录集(这样我就不必编写一大堆单独的表单/操作页面对。)
当调用此“通用”“更改”表单页面时,将传递要编辑的特定记录的“ID”变量,以及包含该记录的特定记录集所特有的“listID”变量编辑。
使用“URL.listID”,表单页面会查看与该值有关的预定义的记录集变量列表(数据源,查询表,第1列的字段,第2列的字段等) “listID”和设置(使用)动态变量。示例 - 如果“listID”为“5”,它只有一列:
<cfif #URL.listID# EQ 5>
<cfset page_title = 'Change Member Role Picklist'>
<cfset datasource = '#Session.db_docs#'>
<cfset query_tbl = 'tblMemberRole'>
<cfset columns = 1>
<cfset column1_label = 'Member Role'>
<cfset column1_field = "role">
<cfset column1_input_type = "text">
<cfset column1_input_size = "100">
<cfset column1_input_maxlength = "100">
</cfif>
查询使用这些变量(“ID”加上从上面列表中获得的其他变量)来检索要编辑的单个记录,并填充“更改”表单。
运行查询:
<cfquery name="cfqGetItem" datasource="#datasource#">
SELECT *
FROM #query_tbl#
WHERE ID = <cfqueryparam value="#URL.ID#" cfsqltype="cf_sql_integer">
</cfquery>
我要填充的“更改”表单(此处没有表格HTML缩写)将是:
<form name="form_item_chg" action="chg_item2.cfm" method="post" enctype="multipart/form-data">
<input type="text" name="#column1_field#" maxlength="#column1_input_maxlength#" size="#column1_input_size#" value="#cfqGetItem[column1_field][currentRow]#">
<input type="Submit" value="Post Changes">
</form>
但是,不是使用VALUE为字段“role”填充“更改”表单,而是尝试使用变量名称“column1_field”,它在查询中表示(当然,是真的)未定义
当我尝试“#cfqGetItem [column1_field] [currentRow]#”时,它说“变量currentrow未定义”。
当我尝试“#cfqGetItem.column1_field#”时,它显示“在查询cfqGetItem中未定义元素column1_field”。
我提前道歉,因为不知道/使用所有正确的术语,并希望我能够合理地解释这一点。我怀疑我将不得不重新编写单独的表单页面/操作页面对。感谢大家的时间和帮助!
原始邮寄: 我的技术性不高,这可能很简单,但这里是
我的困境,我试图在查询中使用变量名检索单个记录。
首先,我定义了一些变量:
<cfset ID = #Form.ID#<!--- the single record I want to retrieve, passed from a form --->
<cfset datasource = 'MyDatabase'>
<cfset query_tbl = 'MyDatabaseTable'>
<cfset field1 = 'actual_fieldname1'><!--- field in MyDatabaseTable --->
<cfset field2 = 'actual_fieldname2'><!--- field in MyDatabaseTable --->
ETC。
然后,要检索此单个记录,我使用这些变量运行查询:
<cfquery name="cfqGetItem" datasource="#datasource#">
SELECT *
FROM #query_tbl#
WHERE ID = #ID#
</cfquery>
然后,我尝试显示查询输出:
无论如何
<cfoutput>
<p>#cfqGetItem.field1#
<p>#cfqGetItem.field2#
</cfoutput>
OR,AS
<cfoutput>
<p>#cfqGetItem[field1][currentRow]#
<p>#cfqGetItem[field2][currentRow]#
</cfoutput>
在每种情况下,我都会收到类似的CF错误消息:“查询cfqGetItem中未定义元素字段1”,或“未定义变量currentrow”。
如何获取查询输出以生成记录的实际值而不是变量名?
非常感谢您的帮助!
答案 0 :(得分:0)
如果你改变了这个:
<cfoutput>
<p>#cfqGetItem[field1][currentRow]#
<p>#cfqGetItem[field2][currentRow]#
</cfoutput>
到此:
<cfoutput>
<cfloop query="cfqGetItem">
<p>#cfqGetItem[field1][currentRow]#
<p>#cfqGetItem[field2][currentRow]#
</cfloop>
</cfoutput>
你应该没事。但是,这是最简单的方法
<cfoutput query="cfqGetItem">
<p>#actual_fieldname1#
<p>#actual_fieldname1#
</cfoutput>
将表和字段名称设置为变量会使问题复杂化。除非它们确实可以变化,否则不要这样做。此外,cfqueryparam标签是您的朋友。在以下地方使用它:
where id = <cfqueryparam
cfsqltype = "cf_sql_integer"
value = "#id#">
答案 1 :(得分:0)
您也可以尝试这样:
<cfquery
name="GetParks" datasource="cfdocexamples"
>
SELECT PARKNAME, REGION, STATE
FROM Parks
ORDER BY ParkName, State
</cfquery>
<cfoutput>
<p>#GetParks.PARKNAME#
<p>#GetParks.REGION#
</cfoutput>
<cfoutput >
#GetParks['state'][GetParks.RecordCount]#
</cfoutput>
<cfoutput >
#GetParks['state'][2]#
</cfoutput>