我有两个问题:
<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字段。
有什么想法吗?
答案 0 :(得分:2)
这很奇怪。
好的,对于grits&amp;胫骨,尝试进行第二次查询: 等级为'%dean%'
另外,按照你的方式尝试,但删除约一年的行,让它选择一切,无论年份...看看你的输出是什么样的。
最后..我认为你不需要担心cfqueryparam中你的价值参数中的HTMLEditFormat。
罗布