mysql - ColdFusion10 - 通过插入查询查询 cfloop

标签 mysql coldfusion coldfusion-10 cfspreadsheet cfloop

第一次发帖。我正在使用 <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/

相关文章:

coldfusion - 更改 ColdFusion WEB-INF 库中的 JAR 文件

上传时PHP跳过CSV中的第一行

mysql - 如何在 Laravel Eloquent 中使用 MIN 和 MAX sql 查询

coldfusion - CFSet 中的条件语句

jquery - 从使用 JQuery Ajax 调用的 Coldfusion CFC 返回值

coldfusion - CF扩展组件突然停止工作

php - 如何更快地创建索引?

mysql - 加载 CSV 时设置插入时间戳

performance - ColdFusion:效率更高的structKeyExists()而不是isDefined()

url - 是否可以使用 ColdFusion 重写 url?