coldfusioncfmlluceecfoutput

Why is cfoutput being ignored?


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?


Solution

  • <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>