2012-04-25 33 views
-4

我想检查2个表单元素对现有数据库实体的内容,然后如果他们中的任何一个是不同的运行条件选项,但我有一些问题,因为下面似乎没有工作。难道我做错了什么?Coldfusion CFIF声明

<cfquery name="qLiveService" datasource="#application.datasource#"> 
SELECT broadcastPackage, AdditonalDVDs 
FROM dbo.tributes 
WHERE profileID = 122> 
</cfquery> 



<cfif qLiveService.broadcastPackage is form.broadcastPackage and qLiveService.AdditonalDVDs is form.AdditonalDVDs > 

<!--- do something --> 

<cfelse> 


<!--- of one was different now run the code in this area --> 

</cfif> 
+3

“不工作”太模糊的描述:)你能解释一下?此外,您正在比较的实际值和两列的数据类型是什么? – Leigh 2012-04-25 01:17:04

+0

我敢肯定,这将很容易解决我提供了一些信息。 – 2012-04-25 01:42:52

+4

符号“>”在查询结束时做了什么? – DG3 2012-04-25 01:45:43

回答

1
 WHERE profileID = 122> 

删除多余的>后122

如果您正在使用引号“周围的变量,你需要添加一斤#标志,确保值进行评估。例如:

<cfset a = "bob"> 
<cfset b = "bob"> 
<cfset x = 5> 
<cfset y = 5> 
<cfif (a is "#b#") and (x is "#y#")> 
    Equal 
<cfelse> 
    Not Equal 
</cfif> 

如果您不使用引号,则不需要磅符号:

<cfif (a is b) and (x is y)> 
    Equal 
<cfelse> 
    Not Equal 
</cfif> 

您可以尝试使用<cfset这个变量,就像上面那样。

+1

他们对#号的使用是正确的。除了上面提到的外部'>'符号DB3,我没有看到任何明显的问题。我怀疑它实际上是一个逻辑或隐含的转换问题。 – Leigh 2012-04-25 18:21:47

-2

正确的WHERE条件查询“WHERE配置文件ID = 122” 和if条件

<cfoutput> 
<cfif #qLiveService.broadcastPackage# eq #val(form.broadcastPackage)# and #qLiveService.AdditonalDVDs# is #val(form.AdditonalDVDs)# > 
    Equal 
    <cfelse> 
Not Equal 
</cfif> 
</cfoutput> 
+0

在这种情况下不需要'#'符号。也不是'cfoutput'标签,因为代码实际上并没有输出任何东西。请参阅[我何时使用磅符号](http://www.coldfusionmuse.com/index.cfm/2011/2/10/when.do.i.use.pound.signs)。而且,在不知道比较哪种类型的值的情况下,不可能说是否添加'val()'会有帮助或伤害。 – Leigh 2013-02-27 02:51:27