mysql - 为什么排序在 MySQL 中有效,但在 Coldfusion 结果集中无效?

标签 mysql sorting coldfusion

我正在运行 Coldfusion8/MySQL 5.0.88 并进行搜索,我需要根据用户设置对其结果进行 ASC/DESC 排序。

如果我在 MySQL 中运行这个查询,它会起作用:

  SELECT a.*
  FROM artikelstammdaten a
        WHERE a.aktiv = "ja"
        AND a.firma LIKE '%test_comp%' 
  GROUP BY a.iln, a.artikelnummer, a.preis_aktuell, a.artikelbezeichnung
  HAVING sum(a.bestand) != 0 OR (a.nos = "ja" AND a.nos_anzeige = "ja")

  ORDER BY a.preis_aktuell ASC
  LIMIT 0, 24

这会产生在 MySQL 中运行的预期结果。但是如果我在 Coldfusion 中这样做:

 <cfquery datasource="db" name="results">
      SELECT a.*
           FROM artikelstammdaten a
           WHERE a.aktiv = "ja"
<cfif LOCAL.search.s_firma neq "" AND LOCAL.search.s_firma neq "Default">
           AND a.firma LIKE <cfqueryparam value="%#LOCAL.search.s_firma#%" cfsqltype="cf_sql_varchar">
    </cfif>
      GROUP BY a.iln, a.artikelnummer, a.preis_aktuell, a.artikelbezeichnung
      HAVING sum(a.bestand) != 0 OR (a.nos = "ja" AND a.nos_anzeige = "ja")

      ORDER BY <cfqueryparam value="#variables.sortierung#" cfsqltype="cf_sql_varchar"> <cfqueryparam value="#variables.sortierung2#" cfsqltype="cf_sql_varchar" maxlength="4">
      LIMIT <cfqueryparam value="#variables.first#" cfsqltype="cf_sql_numeric">, <cfqueryparam value="#variables.last#" cfsqltype="cf_sql_numeric">
 </cfquery>

它只是列出结果,没有任何顺序..

问题:
知道我做错了什么以及如何直接进行排序吗?

谢谢!

解决方案:

<cfset variables.allowSort = "DESC,ASC,all_columns_names_that_are_ok,seperated_by_comma">
<cfif listfindnocase(variables.allowSort, variables.sortierung, ",") EQ 0>
    ORDER BY a.artikelnummer DESC
<cfelse>
    ORDER BY #variables.sortierung# #variables.sortierung2#
</cfif>

因此,如果为排序列或排序方向提交的值与允许列表不匹配,我将使用默认排序标准,否则使用提交的值。

最佳答案

您不能使用 <cfqueryparam ...>ORDER BY .

More information有关此主题的信息,请参阅 Michael Sharman 的这篇博文。

关于mysql - 为什么排序在 MySQL 中有效,但在 Coldfusion 结果集中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12108030/

相关文章:

javascript - 如何在 Javascript 和 ColdFusion 之间编码/解码?

java - 在 DynamicReports 上创建图表以按年份比较销售额

php - 从最后的输出中删除文本

mysql - 按多个字符串搜索以获得最佳结果

Javascript:排序多维数组

json - 覆盖 ColdFusion 11 图表的外部样式 JSON

android - 通过 ViewList MultiSelection 从数据库中删除

c++ - 在 O(min(log(n),log(m)) 复杂度中找到两个不同大小的排序数组的中位数

regex - grep 命令找出任何字符后跟 '.' 的次数

coldfusion - cfhttp 如何不编码加号