Coldfusion中存在奇怪的数据库错误

时间:2012-01-13 21:32:49

标签: coldfusion

我有两个问题:

              

<cfquery name="getChairReview" datasource="#application.dsn#">
SELECT*
FROM eval_reviews
WHERE faculty = <cfqueryparam cfsqltype="cf_sql_numeric" value="#HTMLEditFormat(trim(arguments.id))#">
AND evalYear = <cfqueryparam cfsqltype="cf_sql_numeric" value="#HTMLEditFormat(trim(arguments.evalYear))#">
AND levels = <cfqueryparam cfsqltype="cf_sql_varchar" value="chair">
</cfquery>

<cfreturn getChairReview>
</cffunction>


<cffunction name="getDeanReview" access="public" returntype="query">
<cfargument name="id" type="numeric" required="yes">
<cfargument name="evalYear" type="numeric" required="yes">
<cfset var getDeanReview = QueryNew("")>


<cfquery name="getDeanReview" datasource="#application.dsn#">
SELECT*
FROM eval_reviews
WHERE faculty = <cfqueryparam cfsqltype="cf_sql_numeric" value="#HTMLEditFormat(trim(arguments.id))#">
AND evalYear = <cfqueryparam cfsqltype="cf_sql_numeric" value="#HTMLEditFormat(trim(arguments.evalYear))#">
AND levels = 'dean'
</cfquery>

<cfreturn getDeanReview>
</cffunction>

当evalYear是2012时,它们都能正常工作。如果我在2011年发送,我在getDeanReview上收到错误,指出: [Macromedia] [SQLServer JDBC Driver] [SQLServer]转换数据类型varchar时出错数字

它给出此错误的行是AND levels = 'dean'(注意:我已经取出了cfqueryparam标记,以确保我没有这样做。)

我觉得这很奇怪,因为这两个问题几乎完全相同,只有一个人有一把椅子作为一个座位而另一个是院长。 (是的,我本来可以有一个功能来完成这个工作......有额外的等级参数)

我将'dean'更改为'chair',evalYear仍然是2011年......猜猜是什么?有效。这很奇怪......

级别是varchar字段。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这很奇怪。

好的,对于grits&amp;胫骨,尝试进行第二次查询: 等级为'%dean%'

另外,按照你的方式尝试,但删除约一年的行,让它选择一切,无论年份...看看你的输出是什么样的。

最后..我认为你不需要担心cfqueryparam中你的价值参数中的HTMLEditFormat。

罗布