第一次发帖。我正在使用 <CFSPREADSHEET>
从 Excel 创建查询,然后尝试将查询结果插入 MySQL 表。那工作正常。我还需要从一列中获取一个值并将其正确的 ID 号插入到表中的 ID 列中。这是我的代码。我得到的结果是在每个表行中插入相同的 ID (6)。在这里提供帮助肯定会受到赞赏。谢谢!
<cfspreadsheet action="read"
src="#myFile#"
sheet="5"
excludeheaderrow="true"
headerrow="1"
query="newQuery" />
<cfloop query="newQuery">
<!--- set ID variables --->
<cfif newQuery.Branch EQ "Army">
<cfset variables.Branch_ID = 6 />
<cfelseif newQuery.Branch EQ "Marine Corps">
<cfset variables.Branch_ID EQ 9 />
<cfelseif newQuery.Branch EQ "Navy">
<cfset variables.Branch_ID EQ 7 />
<cfelseif newQuery.Branch EQ "Air Force">
<cfset variables.Branch_ID EQ 8 />
<cfelseif newQuery.Branch EQ "Coast Guard">
<cfset variables.Branch_ID EQ 10 />
</cfif>
<cfquery name="importXLS" datasource="memorials_mysql">
INSERT INTO honorees_temp(FirsttName,MName,LastName,Branch,Branch_ID,Unit)
VALUES
('#Trim(FirstName)#',
'#Trim(MName)#',
'#Trim(LastName)#',
'#Trim(Branch)#',
#variables.Branch_ID#,
'#Trim(Unit)#')
</cfquery>
</cfloop>
最佳答案
一个问题是您的 cfset
中存在语法错误声明。在 cfset 中你需要使用 =
而不是 EQ
.
<!--- set ID variables --->
<cfif newQuery.Branch EQ "Army">
<cfset variables.Branch_ID = 6 />
<cfelseif newQuery.Branch EQ "Marine Corps">
<cfset variables.Branch_ID =9 />
<cfelseif newQuery.Branch EQ "Navy">
<cfset variables.Branch_ID =7 />
<cfelseif newQuery.Branch EQ "Air Force">
<cfset variables.Branch_ID = 8 />
<cfelseif newQuery.Branch EQ "Coast Guard">
<cfset variables.Branch_ID =10 />
</cfif>
newQuery.Branch 的值是什么?如果您的 if 语句中没有任何匹配项,它将保留最后一个值,因为它没有被重新初始化
您还应该使用 <cfqueryparam>
在您的 INSERT 语句上。
此外,这更多是个人喜好,但使用 cfswitch 比使用多个 else if
更有效声明。
<cfswitch expression="#trim(newQuery.Branch)#">
<cfcase value="Army" >
<cfset Branch_ID = 6 />
</cfcase>
<cfcase value="Marine Corps" >
<cfset Branch_ID = 9 />
</cfcase>
<cfcase value="Navy" >
<cfset Branch_ID = 7 />
</cfcase>
<cfcase value="Air Force" >
<cfset Branch_ID = 8 />
</cfcase>
<cfcase value="Coast Guard" >
<cfset Branch_ID = 10 />
</cfcase>
<cfdefaultcase>
<!--- set either a default value or throw an error, depending on your needs --->
<cfset Branch_ID = 0>
<cfthrow message="Invalid Branch_ID">
</cfdefaultcase>
</cfswitch>
关于mysql - ColdFusion10 - 通过插入查询查询 cfloop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15928226/