4

問題が発生して困っています。フォーム内でクエリの結果を実行するために cfoutput を使用しています。entry_1、entry_2 など、動的に名前が付けられる cfselect がいくつかあります。これらは、url のレコード数とともに actionpage に渡され、cfloop を使用してデータベースに挿入します。

<cfloop from="1" to="#url.Count#" index="i">  
<cfquery name="id_#i#" datasource="xxx">Insert Into table1(entry_level) Values(#form.entry_#i##)</cfquery>  
</cfloop>  

そして、それは毎回エラーを投げています。配列形式を使用してみましたが、まだ機能しません。助けてください!

4

1 に答える 1

10

そのように動的構造体セレクターを構築することはできません。次のようなことを行って、同じ結果を得ることができます。

したがって、次のデータを使用します。

<cfset url.count = 3>
<cfset form.entry_1 = 1>
<cfset form.entry_2 = 2>
<cfset form.entry_3 = 3>

このようなものはうまくいくでしょう -

<cfloop from="1" to="#url.Count#" index="i">  
  <cfquery name="id_#i#" datasource="xxx">
    Insert Into table1(entry_level) Values(#form['entry_' & i]#)
  </cfquery>  
</cfloop>  

ColdFusion では基本的に、構造体の値にアクセスする方法が 2 つあります。表記または括弧を介して。動的キーを介して構造体にアクセスしようとしている場合は、括弧を使用する必要があります。

ちなみに、少し良いのは次のとおりです。

   <cfloop from="1" to="#url.Count#" index="i">  
      <cfquery name="id_#i#" datasource="xxx">
        Insert Into table1(entry_level) Values(<cfqueryparam value="#form['entry_' & i]#">)
      </cfquery>  
    </cfloop>  

cfQueryParam はエントリを自動的にエスケープするため、SQL インジェクション攻撃について心配する必要はありません。また、クエリを少し効率的にすることもできます。

于 2012-08-31T15:09:26.760 に答える