到目前为止,我几乎只使用coldfusion进行查询,从不需要结构或任何对象表示法.我正在处理的服务器没有打开调试只是一个"500内部服务器错误."所以我无法看到为什么我的代码不工作,可悲的是我没有能力打开调试.
通过试验和错误注释阻止我已经注意到错误发生在我的结构行中,并将结构添加到我的数组.从我读过的CF文档中我没有看到任何语法错误,但是如果我有任何错误的逻辑或可能出错的话,任何帮助都会非常感激.
<cfset dataArray = []>
<cfset i = 0>
<cfloop query="getMembers">
<cfquery name="getmaps" datasource=“a" dbtype="odbc">
SELECT member_id, mlong, mlat
FROM maps
WHERE member_id = '#getMembers.MemberID#'
</cfquery>
<cfif getmaps.recordcount eq 1>
<!--- temp structure to insert into array --->
<cfset dataTemp = {
memberID = getMemebers.memberID,
name = getMemebers.MemberName,
long = getmaps.mlong,
lat = getmaps.mlat
}>
<cfset dataArray[i] = dataTemp>
<cfset i++>
</cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)
除了Shawn的评论之外,我相信你在将数组索引设置为0时会有问题,而不是1. Coldfusion将数组索引从1开始.
编辑更多建议:
<cfset dataArray = []>
<cfloop query="getMembers">
<!--- Not usually a good idea to query each time through a loop - should be able to do a single query outside it --->
<cfquery name="getmaps" datasource=“a" dbtype="odbc">
SELECT member_id, mlong, mlat
FROM maps
WHERE member_id = <cfqueryparam value='#getMembers.MemberID#' cfsqltype="cf_sql_varchar"><!--- assuming varchar since you had quotes around it --->
</cfquery>
<cfif getmaps.recordcount eq 1>
<!--- temp structure to insert into array --->
<cfset dataTemp = {
memberID = getMembers.memberID,
name = getMembers.MemberName,
long = getmaps.mlong,
lat = getmaps.mlat
}>
<cfset ArrayAppend(dataArray,dataTemp)>
</cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)