2016-10-06 1 views
0

Je dois parcourir une variable et écrire des valeurs renvoyées dans la base de données. Voici mon code à ce jour:Variable de boucle

<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> 

Il écrit dans DB, mais il écrit que la première valeur qu'il obtient. Je parcours déjà la requête, et quand j'ai jeté les valeurs (<cfdump var="#getInfo.NAME#">), je peux voir toutes les valeurs dont j'ai besoin, mais elles ne sont simplement pas insérées dans le DB

+1

Des erreurs? Pourriez-vous ajouter dump au bloc catch? – StanislavL

+2

Je pense que vous avez plus d'une valeur dans , mais il n'écrit que la première valeur dans DB. droite ? Si OUI vous devez boucler la variable 'getInfo'. –

Répondre

0

Cela semble échouer silencieusement. Vous interceptez les erreurs de base de données mais ne faites rien en cas d'erreur. Une instruction d'insertion fonctionne. Sur d'autres insertions, il peut échouer (par exemple, violation d'index unique, "Nom" inséré à long pour la colonne dans la table, etc.). Peut-être se débarrasser du bloc try/catch (au moins temporairement) et voir ce qu'il se passe.