mysql - CFQUERYPARAM 在 URL 中与 "+"中断

标签 mysql coldfusion cfqueryparam

我有一个问题:

  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在Database中都是VARCHARS,但是在URL中却包含“+”,eg Field1=text+moretext

如果我从 URL 字符串中删除“+”,它就可以正常工作!我知道“+”是一个空格的表示,如果我真的再次在 URL 中键入一个空格,它就可以正常工作。只有在出现“+”时才会中断。

我做错了什么?或者我该怎么做才能使 CFQUERYPARAM 使用 URL 中的“+”

最佳答案

url 中的 Field=text+moretext 将作为 text moretext 传到 Url.Field1,因为 URL 中的空格可以编码为加号。

如果您想在最终变量中使用实际的 + 符号,请使用 %2B,或将 UrlEncodedFormat 应用于原始链接。


如果一切正常,那么我猜当 where 子句无法匹配时,随机 ID 的奇怪行为可能与默认数据库值有关 - 尝试 SELECT id FROM table WHERE 1=0 并查看是否你得到随机 ID 了吗?

关于mysql - CFQUERYPARAM 在 URL 中与 "+"中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632395/

相关文章:

java - 如何在 Java 中获取 Apache 环境变量?

Coldfusion 从 Id 加载 session

coldfusion - cfldap 是否允许 cfqueryparam?

text - 对于 ColdFusion cfqueryparam,您将哪种 CFSQLType 用于文本?

html - 如何检查 cfquery 结果中的复选框

mysql - 传递的值在 CFQUERYPARAM 中被视为空

php - 我可以忽略另一个 sql 查询中的 where 子句吗

mysql - InnoDB 设置修改对现有/新数据库的影响

php - 如何更改 PHP 获取行值的 html 表格行颜色?

php - 如何使用合并mysql