0

我确定我只是用 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'' 附近使用正确的语法

4

3 回答 3

4

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

于 2012-02-06T20:33:12.127 回答
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>
于 2012-02-06T20:34:41.987 回答
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>所有变量。如果您仍然遇到问题,请尝试使用变量 userSess、userID 和 site 评估存储的内容<cfdump> and <cfabort>

于 2012-02-06T20:35:06.790 回答