2009-10-27 33 views
1

用「+」破我有一個查詢:CFQUERYPARAM在URL

SELECT id FROM table WHERE field1=<cfqueryparam value="#URL.field1#" 
    cfsqltype="cf_sql_varchar"> 
    AND field2=<cfqueryparam value="#URL.field2#" 
    cfsqltype="cf_sql_varchar"> 
    AND field3=<cfqueryparam value="#URL.field3#" 
    cfsqltype="cf_sql_varchar">; 

標識是在MySQL中的一個整數,但上面的查詢返回的ID不是來自表,甚至沒有一個INTEGER,它似乎是一個隨機的BIGINT! 如果我刪除它的工作原理雖然CFQUERYPARAM ...

SELECT id FROM table WHERE field1='#URL.field1#' 
     AND field2='#URL.field2#' 
     AND field3='#URL.field3#'; 

字段1,字段2和字段3都是VARCHAR處理在數據庫中,但在URL它們含有「+」,例如 Field1=text+moretext

如果我從URL字符串中刪除「+」,它工作正常!我知道「+」是一個空格的表示形式,如果我實際上再次在URL中輸入一個空格,它就可以正常工作。只有當出現「+」時纔會打破。

我做錯了什麼?或者我該怎麼做,使URL爲「+」的工作使用「+」

回答

1

URL中的Field=text+moretext將通過Url.Field1作爲text moretext,因爲URL中的空格可以編碼爲加號。

如果您想在最終變量中輸入實際的+符號,請使用%2B或將UrlEncodedFormat應用於原始鏈接。


如果這一切的作品,那麼我想與隨機ID的異常行爲可能與默認的數據庫值時,where子句不匹配 - 嘗試SELECT id FROM table WHERE 1=0,看看你會得到隨機的id?

+0

這是否解釋了爲什麼查詢返回不同的結果與cfqueryparam,但? –

+0

檢查我的編輯可能的解釋。 –

+0

彼得,你爲什麼在他的問題中編輯了cfqueryparam標籤? –

相關問題