微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 如何在ORDER BY子句中使用cfqueryparam?

我正在努力成为一名优秀的CF Web开发人员并使用< cfqueryparam>围绕进入我的SQL查询的所有FORM或URL元素.

在这种情况下,我试图允许用户动态控制ORDER BY子句.

<cfquery datasource="MyDSN" name="qIncidents">
  SELECT IncidentID,AnimalID,IntakeDate,DxDate,OutcomeDate
  FROM Incidents
  WHERE ShelterID = <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.ShelterID#">
  ORDER BY <cfqueryparam cfsqltype="cf_sql_varchar" value="#SortBy#">
</cfquery>

当我这样做时,我收到以下错误

The SELECT item identified by the ORDER BY number 1 contains a variable as part of the expression identifying a column position. Variables are only allowed when ordering by an expression referencing a column name.

有关如何安全地做到这一点的任何建议?

解决方法

遗憾的是,您不能直接在Order By子句中使用CFQUERYParaM.

如果要动态使用Order By但仍然安全地使用Order By,可以设置CFSWITCH或类似的结构来根据某些条件(例如,URL变量)更改SortBy变量.与往常一样,不要直接从用户传递任何值,只需查看用户的输入并根据该输入从预定的可能值列表中进行选择.然后,只需使用标准语法:

ORDER BY #SortBy#

原文地址:https://www.jb51.cc/mssql/77417.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐