2011-09-12 3 views
1

que je fais quelque chose de stupide, mais je ne sais pas ce qu'il est, quelqu'un peut-il me indiquer pourquoi j'obtiens cette erreur:ColdFusion8 index Paramètre hors erreur de plage

Parameter index out of range (1 > number of parameters, which is 0). 

De ce code ,

cette forme:

<form id="form1" name="form1" method="post" action="?template=/Assets/Plugins/AmericanSurcharges/index.cfm&action=add" class="inputform"> 
    <tr> 
     <td> 
      <select name="datamonth"> 
       <option value=""></option> 
       <cfloop from="1" to="12" step="1" index="i"> 
        <cfset option = monthasstring(i) /> 
        <option value="#i#" >#option#</option> 
       </cfloop> 
      </select> 

     </td> 
     <td><input name="201data" type="text" id="201" size="6" maxlength="7" value="" class="data" /></td> 
     <td><input name="301data" type="text" id="301" size="6" maxlength="7" value="" class="data" /></td> 
     <td><input name="304data" type="text" id="304" size="6" maxlength="7" value="" class="data" /></td> 
     <td><input name="316data" type="text" id="316" size="6" maxlength="7" value="" class="data" /></td> 
     <td><input name="409data" type="text" id="409" size="6" maxlength="7" value="" class="data" /></td> 
     <td><input name="430data" type="text" id="430" size="6" maxlength="7" value="" class="data" /></td> 
     <td><input name="410data" type="text" id="410" size="6" maxlength="7" value="" class="data" /></td> 
     <td><input name="2205data" type="text" id="2205" size="6" maxlength="7" value="" class="data" /></td> 
     <td>&nbsp;</td> 
     <td><input type="submit" name="submit" id="submit" value=" Insert " /></td> 
    </tr> 
</form> 

messages à ce script:

modObj = createObject("component", "surcharge"); 
command = modObj.insertsurcharges(form); 
writeoutput(command); 

appeler cette fonction:

<cffunction name="insertsurcharges" access="public" output="no" returntype="string" > 
    <cfargument name="form" required="yes" type="struct" /> 

    <cfquery name="insertsurcharges" datasource="#variables.dsn#" result="insertsurcharges_result"> 
     insert into nas_staticvalues (`datamonth`,`201`,`301`,`304`,`316`,`409`,`430`,`410`,`2205`) values 
      ( 
      `<cfqueryparam value="#form.datamonth#" CFSQLType="CF_SQL_VARCHAR" null="no" maxlength="20" />`, 
      `<cfqueryparam value="#form.201data#" CFSQLType="CF_SQL_FLOAT" null="no" scale="4" />`, 
      `<cfqueryparam value="#form.301data#" CFSQLType="CF_SQL_FLOAT" null="no" scale="4" />`, 
      `<cfqueryparam value="#form.304data#" CFSQLType="CF_SQL_FLOAT" null="no" scale="4" />`, 
      `<cfqueryparam value="#form.316data#" CFSQLType="CF_SQL_FLOAT" null="no" scale="4" />`, 
      `<cfqueryparam value="#form.409data#" CFSQLType="CF_SQL_FLOAT" null="no" scale="4" />`, 
      `<cfqueryparam value="#form.430data#" CFSQLType="CF_SQL_FLOAT" null="no" scale="4" />`, 
      `<cfqueryparam value="#form.410data#" CFSQLType="CF_SQL_FLOAT" null="no" scale="4" />`, 
      `<cfqueryparam value="#form.2205data#" CFSQLType="CF_SQL_FLOAT" null="no" scale="4" />` 
      ) 
    </cfquery> 

    <cfreturn insertsurcharges_result.GENERATED_KEY /> 

</cffunction> 

et je reçois constamment la même erreur.

Si je remplace tous les queryparams avec:

'#form.datamonth#', 
'#form.201data#', 
'#form.301data#', 
'#form.304data#', 
'#form.316data#', 
'#form.409data#', 
'#form.430data#', 
'#form.410data#', 
'#form.2205data#' 

Les travaux d'insertion, même si je prends le sql que Coldfusion a essayé de courir avec les queryparams & il suffit d'exécuter sur MySQL - qui fonctionne aussi bien!

insert into nas_staticvalues (`datamonth`,`201`,`301`,`304`,`316`,`409`,`430`,`410`,`2205`) values (` (param 1) `, ` (param 2) `, ` (param 3) `, ` (param 4) `, ` (param 5) `, ` (param 6) `, ` (param 7) `, ` (param 8) `, ` (param 9) `) 

La base de données accepte 6 chiffres avec 4 décimales pour tous les types sql_float.

Il me manque quelque chose avec les attributs cfqueryparam - non?

+1

Essayez le '' sans les backticks. – Tomalak

+1

Vous ne devriez pas non plus avoir besoin des guillemets simples autour des cfqueryparams. –

+0

en enlevant les backticks semble l'avoir compris ... Je pensais qu'il y avait une situation en utilisant cfqueryparam que vous en aviez besoin ..? –

Répondre

10

cfqueryparam n'a jamais besoin de guillemets. Il construira la requête avec des guillemets quand il en a besoin et sans le faire. C'est l'une des parties géniales à propos de l'utilisation de cfqueryparam.

Questions connexes