2012-11-23 85 views
1

我有一些代碼,只做更新避免魔法值

<cfif tags NEQ "skip"> 
<cfquery> 
UPDATE myTable 
SET tags = <cfqueryparam cfsqltype="CF_SQL_varchar" value="#arguments.tags#"> 
WHERE ID = <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#arguments.ID#"> 
</cfquery> 

什麼會比使用「跳過」作爲魔法值更好的方法?請注意,空白是一個有效的值。

+0

空/空值將無法正常工作? <!--- do query ---> BKK

+0

也許這只是示例代碼,但不要忘記使用cfqueryparam來防止SQL注入! – duncan

+0

你有什麼不一定是壞的。 @ barnyr的答案的第一句話是非常相關的。 –

回答

4

這取決於數據來自何處。理想情況下,我會設置一個變量爲true或false並檢查。我猜在你的示例代碼中來自一個表單,而'skip'是'沒有這些'的值。你可能需要使用某些東西作爲魔法值,但我傾向於使用類似__SKIP_TAGS__這非常明確的東西。

您也可以拆分頁面邏輯,以便首先處理表單提交,檢查魔術值並設置布爾值以確定是否從#tags#插入數據,然後稍後使用布爾值進行檢查。總體邏輯將是相同的,但更好地佈局。

你可能需要考慮增加更多的情況下你的問題,比如在數據的來源,讓別人可以給你更好的建議

+0

我打算使用__SKIP_TAG__選項,因爲a)它比跳過更不可能有效,並且可以搜索 –