1

I have a very simple CFML page as follows:

<cfquery name="qry" datasource="#application.db.source#" username="#application.db.user#" password="#application.db.pass#">
    SELECT * FROM changemgmt.rfc WHERE rfc_id = <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="0">;
</cfquery>
    
<cfoutput query="qry">
    #qry.RecordCount#
</cfoutput>

My <cfoutput> tag is not working as I would expect. If you were to look at the source code of this page, it would be entirely composed of empty lines. It's as if the <cfoutput> tag is being parsed out by the server. However if I change the code to:

<cfoutput>
    #qry.RecordCount#
</cfoutput>

I am using Lucee as my backend CFML engine. Can anyone explain to my why there is a difference?

rrk
  • 15,677
  • 4
  • 29
  • 45

1 Answers1

0

<cfoutput query="qry"> this is used to loop throw all the rows in the query. If your query result have no rows, the execution will never reach the login with in the <cfoutput query="qry">. But if there are 1+n rows in the result, your code will print the recordcount 1+n times.

In this case if all you want is to print recordcount of the result, then you just need to use <cfoutput>#qry#</cfoutput>

But if you want to print values each row of the query then you can use <cfoutput query="qry">

<cfoutput query="qry">
  <div>
    <span>#qry.rfc_id#</span>
    <span>#qry.name#</span>
    ...
  </div>
</cfoutput>
rrk
  • 15,677
  • 4
  • 29
  • 45