我有一个问题:
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">;
Id是MySQL中的INTEGER,但上面的查询返回一个不是来自表的Id,甚至不是INTEGER,它似乎是一个随机的BIGINT! 如果我删除CFQUERYPARAM它虽然有效......
SELECT id FROM table WHERE field1='#URL.field1#'
AND field2='#URL.field2#'
AND field3='#URL.field3#';
Field1,Field2和Field3都是数据库中的VARCHARS,但在URL中它们包含“+”,例如
Field1=text+moretext
如果我从URL字符串中删除“+”,它可以正常工作!我知道“+”是一个空格的表示,如果我再次在URL中输入一个空格,它就可以正常工作。只有存在“+”时才会破坏。
我做错了什么?或者我该怎么做才能使CFQUERYPARAM与URL中的“+”一起使用
答案 0 :(得分:1)
网址中的Field=text+moretext
将作为text moretext
传递到Url.Field1,因为网址中的空格可以编码为优势。
如果您希望在最终变量中使用实际的+
符号,请使用%2B
,或将UrlEncodedFormat
应用于原始链接。
如果一切正常,那么我猜当随机ID无法匹配时,随机ID的奇怪行为可能与默认数据库值有关 - 尝试SELECT id FROM table WHERE 1=0
并查看是否获得随机ID?