1

これが可能かどうかはわかりません。変数名を表す2つの文字列を連結し、そこから変数値を読み取ることはできますか?例えば:

<cfloop index="person" from="0" to="#numberAuthorized - 1#">
  //USING 'thePerson' DIDN'T WORK EITHER
  <cfset thePerson = 'authorized_name' & person>
  <cfquery name="qAddAuthorizedPeople" datasource="#thedb#" blockfactor="100">
    INSERT INTO people (requestid, fullname)
    VALUES ('#requestid#', '#authorized_name & 1#')
  </cfquery>
</cfloop>

読み取る必要のある変数はauthorized_name0, authrozied_name1, etc.です。ループしているので、インデックスをインクリメントして、変数名の末尾に追加できます。次に、そのように私のデータベースに挿入します。明らかに、これは機能していません。また、前に連結して変数(thePerson)に設定#thePerson#し、クエリを入力しようとしましたが、それも機能しませんでした。私はこれを行うことができますか?

4

2 に答える 2

5

編集これらの変数をどのように渡しているのかわかりません。しかし、それらがFORM範囲内にあると言ってください...FORMも構造です。どの構造でも、連想配列表記を使用して動的にキーにアクセスできます。(また、変数のスコープを適切に設定してください。)

<cfloop from="0" to="#numberAuthorized - 1#" index="counter">
  <!--- extract value of authorized_name0, authorized_name1, ... --->
  <cfset variables.fullName = FORM["authorized_name"& counter]>

  <cfquery name="qAddAuthorizedPeople" datasource="#thedb#" blockfactor="100">
    INSERT INTO people (requestid, fullname)
    VALUES (
      <cfqueryparam value="#requestid#" cfsqltype="cf_sql_varchar">
      , <cfqueryparam value="#variables.fullName#" cfsqltype="cf_sql_varchar">
    )
  </cfquery>
</cfloop>
于 2012-09-20T18:33:00.203 に答える
0

クエリから名前のリストを取得している場合、これをループして、INSERTでdbに追加する方法は次のとおりです。

<cfloop from="1" to="#structCount(numberAuthorized)#" index="person">
    <cfquery name="qAddAuthorizedPeople" datasource="#thedb#" blockfactor="100">
    INSERT INTO people (requestid, fullname)
    VALUES ('#requestid#', '#numberAuthorized["authorized_name"][person]#')
    </cfquery>
</cfloop>

上記の例では、「authorized_name」は、名前を取得するテーブルまたは構造の列の名前であると想定されています。これは、ある種の構造体からも同じように簡単に発生する可能性があります。

構造体が入力されるフォームの名前である場合は、範囲を変更してstructCount(numberAuthorized)を使用します。フォーム名の各名前の末尾に「authorized_name_0」や「authorized_name_1」などの値が追加されている場合は、各挿入の前にこれらの変数を設定するコード。これにより、それが実行していることが明確になります。例:

<cfloop from="1" to="#structCount(numberAuthorized)#" index="person">
  <cfset counter = counter + 1>
  <cfset newFullname = numberAuthorized["authorized_name_" & counter]>
  <cfquery name="qAddAuthorizedPeople" datasource="#thedb#" blockfactor="100">
  INSERT INTO people (requestid, fullname)
  VALUES ('#requestid#', '#numberAuthorized["authorized_name"][person]#')
  </cfquery>
</cfloop> 

構造体から作業しているのか、それともそれに応じて構文を変更する必要があるのか​​はまだ明らかではありません。その観点から、上記のより多くの擬似コードを検討してください。

于 2012-09-20T18:13:30.217 に答える