2016-10-06 12 views
0

変数をループして戻り値をDBに書き込む必要があります。 ここでは、これまでに私のコードです:それはDBに書き込むループスルー変数

<cffunction name="csv"> 
    <cffile action="read" file="test.csv" variable="csvfile" charset="utf-8"> 
    <cfset csv_query = app.csvToQuery.CSVToQuery(CSV = csvFile.Trim()) /> 

    <cfloop query="csv_query"> 
     <cfset getInfo = app.directory.searchAll(
      findNo = "#replace(csv_query.column_1, "test", "", 'all')#", 
      findBy = "Null" 
     )> 

     <!--- <cfdump var="#getInfo#"> ---> 
     <cfoutput><cfdump var="#getInfo.NAME#"></cfoutput> 

     <cftry> 
      <cfquery datasource="#app.dsn#"> 
       INSERT INTO WRITEINFO (
        Name, 
       ) VALUES (
        '#val(getInfo.NAME)#', 
       ) 
      </cfquery> 
       <cfcatch type="database"> 
      </cfcatch> 
     </cftry> 

    </cfloop> 
</cffunction> 

は、それだけでそれを取得最初の値を書き込みます。私はすでにクエリをループしています。値(<cfdump var="#getInfo.NAME#">)をダンプすると、必要な値がすべて表示されますが、DBに挿入されていません。

+1

間違いはありますか?キャッチブロックにダンプを追加できますか? – StanislavL

+2

に1つ以上の値があると思いますが、最初の値だけがDBに書き込まれます。右 ? YESの場合は、 'getInfo'変数をループする必要があります。 –

答えて

0

これはサイレントモードで失敗したようです。あなたはデータベースのエラーをキャッチしますが、エラーの場合は何もしません。 1つの挿入ステートメントが機能します。他の挿入では、失敗する可能性があります(たとえば、ユニークなインデックス違反、テーブルのカラムの長さに「名前」が挿入されたなど)。おそらくtry/catchブロック(少なくとも一時的に)を取り除き、何が起こるかを見てください。