2012-04-25 61 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