2016-10-06 3 views
0

Мне нужно перебрать переменную и записать возвращаемые значения в DB. Вот мой код до сих пор:Loop через переменную

<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

Любые ошибки? Не могли бы вы добавить дамп в блок catch? – StanislavL

+2

Я думаю, что у вас есть больше значений в , но он записывает только первое значение в БД. правильно ? Если ДА, вам нужно зациклировать переменную 'getInfo'. –

ответ

0

Похоже, что это терпит неудачу. Вы обнаруживаете ошибки базы данных, но ничего не делаете в случае ошибки. Работает одна инструкция. В других вставках он может выйти из строя (например, уникальное нарушение индекса, «Имя», вставленное в длинный столбец в таблице и т. Д.). Возможно, избавиться от блока try/catch (по крайней мере временно) и посмотреть, что произойдет.