1
私は、ffunction
がJSON構造を返す必要があります。返す必要がある列は50以上あります。私の構造を手動で構築するのではなく、動的に構築したいと思います。最初にクエリをループし、各テーブルの列をループします。次に例を示します。cfqueryから構造体を構築する方法は?
<cffunction name="getRecords" access="remote" output="true" returnformat="JSON">
<cfargument name="userID" type="string" required="true">
<cfset fnResults = StructNew()>
<cfquery name="myQuery" datasource="test">
SELECT
ur_first,
ur_last,
ur_dob,
ur_gender,
ur_email,
ur_address,
... and the rest of the columns
FROM Users
WHERE ur_id = <cfqueryparam value="#trim(arguments.userID)#" cfsqltype="cf_sql_char" maxlength="15">
ORDER BY ur_createDt
</cfquery>
<cfset fnResults.recordcount = myQuery.recordcount>
<cfloop query="myQuery">
<cfset qryRecs = StructNew()>
<cfloop array="#myQuery.getColumnList()#" index="columnName">
<cfset qryRecs.'#columnName#' = URLEncodedFormat('#columnName#')>
</cfloop>
</cfloop>
<cfset fnResults.data = qryRecs>
<cfreturn fnResults>
</cffunction>
このエラーは、私はAjaxのコールの後に戻って取得しています:
この行に参照CFML variable name cannot end with a "." character.
The variable qryRecs. ends with a "." character. You must either provide an additional structure key or delete the "." character.
:
443 : <cfset qryRecs.'#columnName#' = URLEncodedFormat('#columnName#')>
私はqryRecsを構成する列名を設定したいですこのように:
<cfset qryRecs.ur_first = URLEncodedFormat(myQuery.ur_first)>
この方法では、手動で50個以上の列を設定する必要はありません。それらはすべて動的に作成する必要があります。誰かが助けてくれたら教えてください。
この行を ''と書くことをお勧めします。いずれにしても好ましいだろう。 –
[アーカイブを検索](https://stackoverflow.com/search?q=%5Bcoldfusion%5D+dynamic+query+row)クエリ列に動的にアクセスするスレッドがたくさんあります。つまり、構造体は単一の行を含むクエリにのみ適しています。複数の行が含まれている場合は、構造体の配列を使用します。また、 'var/local'には、クエリ名とインデックス変数(" column ")を含むすべての関数変数を忘れないでください。 – Leigh