【问题标题】:making the listcolumns search dynamic使列表列搜索动态化
【发布时间】:2021-09-10 16:53:58
【问题描述】:

我正在关注数据表上的一个 tute 并找到了一个代码,它基本上迭代了 order 子句的列,但在这种情况下,我没有硬编码的 order 列列表,它是一个动态列表

我怎样才能改变这个

<cfif form["order[0][column]"] gt 0>
    ORDER BY 
    <cfif form["order[0][column]"] eq '1'>
    empname <cfif form["order[0][dir]"] eq 'desc'>desc</cfif>
    </cfif>
    <cfif form["order[0][column]"] eq '2'>
    empno <cfif form["order[0][dir]"] eq 'desc'>desc</cfif>
    </cfif>
    <cfif form["order[0][column]"] eq '3'>
    ic <cfif form["order[0][dir]"] eq 'desc'>desc</cfif>
    </cfif>   
</cfif>

要动态,因为我的列表变量是一个逗号分隔为id,name,email 等等

【问题讨论】:

  • 请编辑您的问题并显示表单的相关部分。

标签: coldfusion lucee


【解决方案1】:

我总是会使用此字段名称创建一个 Coldfusion 数组或结构,如下所示。

<cfset orderColumnReference = ['empname', 'empno', 'ic', 'id', 'name', 'email', ...]>
<cfif form["order[0][column]"] GTE ArrayLen(orderColumnReference)>
  <cfset orderByColumn = orderColumnReference[form["order[0][column]"]]>
    ORDER BY 
    #orderByColumn# <cfif form["order[0][dir]"] eq 'desc'>desc</cfif>
</cfif>

【讨论】:

  • 我担心这可能会打开查询以进行注入攻击。
  • 我不关心这个问题。然而,我对使用结构或数组而不是列表感到困惑。
  • 我一直觉得数组比列表更具可读性。所以我更喜欢使用它们。 @james 这仅适用于一组预定义的列名,因此不可能进行 SQL 注入。
猜你喜欢
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多