ColdFusion和从MySQL获取数据
我在一个CF站点上工作,需要从MySQL表中获取数据 我可以创建CFQuery fine并检查返回的记录,但是如何获取返回的记录并循环它们,以及从每行的特定字段中获取数据呢 我可以写if/end if等,但我不记得如何访问数据ColdFusion和从MySQL获取数据,mysql,coldfusion,Mysql,Coldfusion,我在一个CF站点上工作,需要从MySQL表中获取数据 我可以创建CFQuery fine并检查返回的记录,但是如何获取返回的记录并循环它们,以及从每行的特定字段中获取数据呢 我可以写if/end if等,但我不记得如何访问数据 -JAson假设您使用firstname列进行了名为_的查询: <cfoutput query="#the_query#"> #firstName# ... etc <br> </cfoutput> #名字#。。。etc 在C
-JAson假设您使用firstname列进行了名为_的查询:
<cfoutput query="#the_query#">
#firstName# ... etc <br>
</cfoutput>
#名字#。。。etc
在CFQUERY中定义查询后,将结果放入CFOUTPUT标记中。您可以使用语法#[query name].[field name]#指定要显示的字段。或者,您可以使用CFLOOP标记来实现类似的效果
例如,您希望对数量大于零的行的“价格”字段求和。(想象一辆购物车)
顺便说一句,在CFOUTPUT查询参数中不鼓励使用散列标记/磅符号/八位字符
[编辑:]
要转储查询堆栈的内容,请在“”行之前添加到[cf\u root]\wwwroot\WEB-INF\debug.cfm:
#重新放置数据库(转储内容,“展开”>BODY[:space:][]*[:space:][]*,“展开”>BODY”)#
有很多方法可以做到这一点。如上所述,您可以将cfoutput与query属性一起使用。您还可以引用“queryname.columnname”
如果需要访问特定的行/列,可以使用如下数组表示法:
queryname.columnname[rownum]
(记住,CF从1开始计数,而不是0)。
对于动态列访问,可以使用
queryname[columnvariable][rownum]
如果您的columname在CF中是非法变量名(如8thCol),您可以稍微修改一下:
queryname['8thCol'][rownum]
希望这能有所帮助。所有现有的答案/评论似乎都涉及到不同的方面,因此这是一次尝试,旨在将所有这些信息整合到一个清晰的解释中。
(此答案设置为社区wiki-请根据需要进行编辑。)
要从查询中访问变量,请使用:
QueryName.ColumnName[RowNum]
QueryName["ColumnName"][RowNum]
在创建查询后的任何时候,这两个选项都将起作用。两者都可以在
cfoutput
内部用于显示变量,也可以在cfset
内部用于分配变量
第二个对动态变量很有用,可以接受如下变量:
QueryName[DynamicColumnName][RowNum]
QueryName["Partial#DynamicName#"][RowNum]
QueryName["Partial"&DynamicName][RowNum]
为了方便起见,不要手动循环查询:
<cfloop index="CurrentRow" from="1" to="#QueryName.RecordCount#">
<cfoutput>#QueryName.ColumnName[CurrentRow]#</cfoutput>
</cfloop>
#QueryName.ColumnName[CurrentRow]#
您可以简单地执行以下操作:
<cfloop query="QueryName">
<cfoutput>#QueryName.ColumnName[CurrentRow]#</cfoutput>
</cfloop>
<cfoutput query="QueryName">
#ColumnName#
</cfoutput>
#QueryName.ColumnName[CurrentRow]#
作为进一步的快捷方式,您可以执行以下操作:
<cfoutput query="QueryName">
#QueryName.ColumnName[CurrentRow]#
</cfoutput>
<cfdump var="#QueryName#"/>
#QueryName.ColumnName[CurrentRow]#
而且,在
或
中,您只需执行以下操作:
<cfloop query="QueryName">
<cfoutput>#QueryName.ColumnName[CurrentRow]#</cfoutput>
</cfloop>
<cfoutput query="QueryName">
#ColumnName#
</cfoutput>
#列名#
但是,最后一个快捷方式仅用于显示-如果您执行以下操作:
<cfset ColumnName = "NewValue" />
这不会修改原始查询数据。相反,您需要执行以下操作:
<cfset QueryName.ColumnName[CurrentRow] = "NewValue" />
这将修改查询结果(但不会修改数据库中的值)
要显示已运行的实际SQL查询,使用CF8(以及Railo和OpenBD),您可以执行以下操作:
<cfoutput query="QueryName">
#QueryName.ColumnName[CurrentRow]#
</cfoutput>
<cfdump var="#QueryName#"/>
它将向您显示查询结果和实际运行的SQL
要使用CF7显示实际的SQL,您需要在
cfquery
标记中添加一个result=“QueryInfo”
,然后
将显示SQL。Awesome,以便从列中输出数据。完美的如果我想将列中的值分配给要操作的变量等,我是否仍然使用CFOUTPUT来访问列?我强烈建议使用CFLOOP而不是CFOUTPUT,然后将输出到浏览器的任何逻辑/变量包装为CFOUTPUT@Jason:如果只是赋值,则只需使用cfset variableName=firstName。但是,如果您想利用cfoutput(group属性)的分组功能,可以使用cfloop来实现这一点。对不起,有点密集,如果不鼓励使用#,我如何从表中指定所需的列?我不认为我知道任何其他方式,因为CF 2!我指的是这一组中的另一个答案。我建议使用而不是在实际的begin/end cfoutput标记中,然后当然需要使用它们。ie#u字段#好的,在我构建了一个CFQUERY并回显它正在运行的SQL之后,您知道如何接受它吗?我没有得到我所期望的,我想确保我的SQL是有序的。1) 创建sql作为变量并执行它#theSql####theSql#或2)使用内部未记录的函数:搜索getDebuggingService().getDebugger().getData()我实际上修改了我们的内部cfdebug页面([cf#root]\wwwroot\WEB-INF\debug.cfm)检查隐藏参数以根据需要转储查询。因此,如果使用queryname.column,是否使用CFOUTPUT?这样:从queryName=#URL.queryName#的内容中选择queryName、title、content;xxx=getContent.contentCFOUTPUT仅在您希望输出到浏览器时才是必需的。带有query属性的CFOUTPUT用于循环查询以输出到浏览器。您不需要它来执行cfset来设置用于操作的变量。