我的CFQUERYPARAM出错了

时间:2012-02-06 20:11:47

标签: mysql coldfusion cfquery cfqueryparam

我确信我只是在做CFQUERYPARAM这个可怕的错误,但这就是我要做的事情:

<CFQUERY DATASOURCE="tr3" NAME="qryPartner">
  SELECT *
  FROM  UsrMatchActualTR2
  WHERE 
    session = #userSess# 
   AND 
    user_id = #userID# 
   AND 
    site=<cfqueryparam value="#userSite#" cfsqltype="CF_SQL_VARCHAR" maxlength="5">
</CFQUERY>

我收到了错误

  

执行数据库查询时出错。

     

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第3行的'AND site ='UTD''附近使用正确的语法

3 个答案:

答案 0 :(得分:4)

我怀疑你的userID变量是空白的,导致查询结构中出现“漏洞”。您应该将CFQUERYPARAM用于所有参数,包括userID和userSess。

答案 1 :(得分:2)

首先,确保您的数据类型正确,站点列是varchar / string吗?另外,尝试对所有变量使用cfqueryparam。

<CFQUERY DATASOURCE="tr3" NAME="qryPartner">
    SELECT * FROM  UsrMatchActualTR2
    WHERE session = <cfqueryparam value="#userSess#" cfsqltype="cf_sql_varchar" />
    AND user_id = <cfqueryparam value="#userID#"  cfsqltype="cf_sql_integer" />
    AND site = <cfqueryparam value="#userSite#" cfsqltype="cf_sql_varchar" maxlength="5" />
</CFQUERY>

答案 2 :(得分:1)

尝试替换值参数

周围的“双引号”
WHERE session = #userSess# AND user_id = #userID# AND site=<cfqueryparam  value="#userSite#"  cfsqltype="CF_SQL_VARCHAR" maxlength="5">

使用'单引号'

WHERE session = #userSess# AND user_id = #userID# AND site=<cfqueryparam value='#userSite#'  cfsqltype="CF_SQL_VARCHAR" maxlength="5">

我见过CF分化。此外,您应该对所有变量使用<cfqueryparam>。如果仍有问题,请尝试使用<cfdump> and <cfabort>

评估变量userSess,userID和site中存储的内容