2016-09-26 9 views
1

複数の値を含む変数はほとんどありません。基本的に私はすべての値をデータベースに保存したいと思います。私は私がここにStackoverflowで得たこのコードを使用しています。複数の値をデータベースに格納するためのCFloopクエリ

<cfquery datasource="databaseName"> 

INSERT INTO spreadsheet 
    ([Local.Time.Stamp], 
    [Energy.Delivered..kVAh.], 
    [Energy.Received..kVAh.], 
    [Energy.Received..kVARh.], 
    [Energy.Delivered..kVARh.], 
    [Real.A..kW.], 
    [Real.B..kW.]) 

    VALUES 
    (<cfloop query="excelquery"> 
    '#excelquery.col_1#', 
    '#excelquery.col_2#', 
    '#excelquery.col_3#', 
    '#excelquery.col_4#', 
    '#excelquery.col_5#', 
    '#excelquery.col_6#', 
    '#excelquery.col_7#' 
    </cfloop>) 

</cfquery> 

しかし、私はいつも構文エラーが表示されます。私は私のcfloop部分が間違っていると信じて、誰かが私にcfloopを書く正しい方法を教えてくれますか?

答えて

4

問題、すなわち、複数の値を入力するためのフォーマットは次のようでなければならないcfloop生成されたクエリである:また

INSERT INTO TableName (col,col,...) VALUES (val,val,...),(val,val,...),... 

、SQLインジェクションを回避するために、cfqueryparamを使用します。

あなたはこれを試すことができます。

<cfquery datasource="databaseName"> 

    INSERT INTO spreadsheet 
    ([Local.Time.Stamp], 
    [Energy.Delivered..kVAh.], 
    [Energy.Received..kVAh.], 
    [Energy.Received..kVARh.], 
    [Energy.Delivered..kVARh.], 
    [Real.A..kW.], 
    [Real.B..kW.]) 

    VALUES 
    <cfloop query="excelquery"> 

    <!--- cf_sql_varchar is just an example. ---> 
    (<cfqueryparam cfsqltype="cf_sql_varchar" value="#excelquery.col_1#">, 
     <cfqueryparam cfsqltype="cf_sql_varchar" value="#excelquery.col_2#">, 
     <cfqueryparam cfsqltype="cf_sql_varchar" value="#excelquery.col_3#">, 
     <cfqueryparam cfsqltype="cf_sql_varchar" value="#excelquery.col_4#">, 
     <cfqueryparam cfsqltype="cf_sql_varchar" value="#excelquery.col_5#">, 
     <cfqueryparam cfsqltype="cf_sql_varchar" value="#excelquery.col_6#">, 
     <cfqueryparam cfsqltype="cf_sql_varchar" value="#excelquery.col_7#">) 
     #excelQuery.currentRow NEQ excelQuery.recordCount ? ',': ''# 
    </cfloop> 

</cfquery> 

あなたはいないレコードのエラーを回避するために、クエリを生成する前にRecordCountをチェックを追加する必要があります。

+0

これは正常に動作します。ありがとうございました。 – gosi123

+0

あなたはこれを行うことができるとは考えていませんでした - #excelQuery.currentRow NEQ excelQuery.recordCount? '、': ''# - 私はいつもcfifを使いました。いいよ! – luke

関連する問題