CFOUTPUT循环

问题描述 投票:0回答:1
coldfusion coldfusion-10
1个回答
0
投票

首先,maxrows限制查询变量从数据库返回后的结果数。

如果您只返回一个结果,那么这不会对您的查询性能产生任何影响。

ColdFusion 允许您使用 CFQUERYPARAM 标签传递绑定参数。

例如:

<cfquery name="q">
    SELECT property1, property2, property3 
    FROM yourTable 
    WHERE RowID = <cfqueryparam value="#NumericVariable#" cfsqltype="CF_SQL_INTEGER" />
</cfquery>

您可以希望通过提供绑定参数并指定要返回的属性来提高数据库的速度。这可能允许更好的查询缓存和性能改进,具体取决于您使用的数据库引擎。

我会补充说,使用 CFQUERYPARAM 通常比让变量不合格并可能对 SQL 注入攻击开放更安全。

其次,你得到所有结果的原因是因为内部 cfoutput

<cfoutput>
 mylist.CurrentRow - #mylist.CurrentRow#<br> 
</cfoutput>

我想更好的解决方案是这样查询:

<cfquery datasource="ECS360"  name ="mylist">
  select *
  from employee.employee
  ORDER BY employeenumber DESC
</cfquery>

<cfoutput query="mylist" maxRows="26">
<br/>
<!--- get the latest 6 record --->
    <cfif #mylist.CurrentRow# lte 6>
        <!--- do something special with the latest record --->
        currnet row #mylist.currentrow#
        <cfif #mylist.CurrentRow# eq 1> 
            do something special
                #mylist.CurrentRow# - #mylist.CurrentRow#<br> 
        <cfelse> 
        currnet row #mylist.currentrow#
            do something else
        </cfif>
        <cfif #mylist.CurrentRow# lte 3>
            do something 123  
        </cfif>
    </cfif>
</cfoutput>
© www.soinside.com 2019 - 2024. All rights reserved.