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構文にエラーがあります。3行目の'ANDsite ='UTD''の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

4

3 に答える 3

4

userID 変数が空白であるため、クエリ構造に「穴」が開いていると思われます。userID と userSess を含むすべての引数に CFQUERYPARAM を実際に使用する必要があります。

于 2012-02-06T20:33:12.127 に答える
2

まず、データ型が正しいことを確認します。サイトの列はvarchar /文字列ですか?また、すべての変数に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 に答える