Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 我无法引用动态变量_Loops_Variables_Dynamic_Coldfusion_Reference - Fatal编程技术网

Loops 我无法引用动态变量

Loops 我无法引用动态变量,loops,variables,dynamic,coldfusion,reference,Loops,Variables,Dynamic,Coldfusion,Reference,尝试使用动态表单字段名。我可以在页面上获取它们,但无法引用它们以插入或从表中选择。我以前用数字动态命名表单字段,然后通过循环将数据插入到表中,但这些项将插入到不同的表中,因此我想按名称引用它们,我尝试了几个选项,但到目前为止,我尝试的所有选项都出现了错误。 我在表单上有4到6个字段,每个部分都有一个添加按钮。我想单击add按钮并将字段插入到一个特定的表中,每个部分下面都有一个表,该表将显示刚刚添加的数据 <cfif structKeyExists(form,"Add")> &

尝试使用动态表单字段名。我可以在页面上获取它们,但无法引用它们以插入或从表中选择。我以前用数字动态命名表单字段,然后通过循环将数据插入到表中,但这些项将插入到不同的表中,因此我想按名称引用它们,我尝试了几个选项,但到目前为止,我尝试的所有选项都出现了错误。 我在表单上有4到6个字段,每个部分都有一个添加按钮。我想单击add按钮并将字段插入到一个特定的表中,每个部分下面都有一个表,该表将显示刚刚添加的数据

<cfif structKeyExists(form,"Add")>
    <cfquery name = "getTableColumnHeadings">
        SELECT * FROM '#enclTable#'  <<< errors here  >>>  enclTable is undefined
    </cfquery>
    <center><cfdump var = "#enclTable#"></center>   <<<  and here  >>>      enclTable is undefined
</cfif>

也不管用。我不确定我做错了什么。我可以创建动态变量,但我不能在使用它之后引用它。很抱歉,如果这是一个很大的解释,我想彻底了解所有的细节。

以下是我如何处理这种情况。表单如下所示:

<cfoutput query="GetRecords">
<cfinput type="hidden" name="OldSpelling#DrugId#" value="#StandardSpelling#">
<cfinput type="hidden" name="OldInclude#DrugId#" value="#IncludeInReport#">
<cfinput type="hidden" name="OldCategory#DrugId#" value="#CategoryID#">
<tr>
<td>#DrugName#</td>
<td>
<cfloop list="#form.fieldnames#" index="ThisField">
<cfscript>
CheckForDifference = false;
if (left(ThisField, 10) == "oldinclude"){
ThisId = RemoveChars(ThisField, 1, 10);
ThisOldInclude = form[ThisField];
ThisInclude = form["Include" & ThisID];
等等

处理过程如下所示:

<cfoutput query="GetRecords">
<cfinput type="hidden" name="OldSpelling#DrugId#" value="#StandardSpelling#">
<cfinput type="hidden" name="OldInclude#DrugId#" value="#IncludeInReport#">
<cfinput type="hidden" name="OldCategory#DrugId#" value="#CategoryID#">
<tr>
<td>#DrugName#</td>
<td>
<cfloop list="#form.fieldnames#" index="ThisField">
<cfscript>
CheckForDifference = false;
if (left(ThisField, 10) == "oldinclude"){
ThisId = RemoveChars(ThisField, 1, 10);
ThisOldInclude = form[ThisField];
ThisInclude = form["Include" & ThisID];

然后我对这些变量做一些处理。

使用数组表示法,您的思路是正确的。但是您想要的是表单范围,而不是变量范围。enclTable未定义。在代码中,您在哪里定义了名为enclTablexxxx的表单字段或变量?我在上面的代码中没有看到它,因此错误消息并不令人惊讶。name=inpName的实际值是多少?另一方面,在查询中使用客户端提供的值(如)会使数据库面临sql注入的风险。@leigh,enclTable来自查询getFormHeadings。inpName来自查询getFormFields。enclTable是表的名称,inpName是该表中字段的名称。我试图尊重enclTable中保存的用于将记录插入的内容。变量inpName包含字段名,enclTable包含表名。即使在索引它们之后,我也无法引用它们来获取值。我有另一个想法,我将尝试与丹·布拉库克的想法相一致。不过,任何其他建议都将不胜感激。谢谢enclTable来自GetFormHeaders@malibu65k查询-在处理表单时,该查询看起来并不存在。这意味着作用域中没有名为enclTable的变量,这解释了未定义的错误。变量inpName包含字段的名称否,您将使用该值作为字段名称,即name=inpName。不一样。同样,不存在名为enclTable的变量或表单字段。因此出现了错误。
<cfoutput query="GetRecords">
<cfinput type="hidden" name="OldSpelling#DrugId#" value="#StandardSpelling#">
<cfinput type="hidden" name="OldInclude#DrugId#" value="#IncludeInReport#">
<cfinput type="hidden" name="OldCategory#DrugId#" value="#CategoryID#">
<tr>
<td>#DrugName#</td>
<td>
<cfloop list="#form.fieldnames#" index="ThisField">
<cfscript>
CheckForDifference = false;
if (left(ThisField, 10) == "oldinclude"){
ThisId = RemoveChars(ThisField, 1, 10);
ThisOldInclude = form[ThisField];
ThisInclude = form["Include" & ThisID];