1

私はばかげたことをしていますが、それが何であるかわかりません。誰かがこのエラーが発生する理由を指摘してもらえますか:

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

このコードから、

この形:

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

このスクリプトへの投稿:

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

この関数を呼び出す:

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

常に同じエラーが発生します。

すべての queryparams を次のように置き換えると:

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

また、coldfusion が queryparams を使用して実行しようとした sql を取得し、それを mysql で実行した場合にも、挿入が機能します。これも同様に機能します。

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

データベースは、すべての sql_float タイプで小数点以下 4 桁の 6 桁を受け入れます。

cfqueryparam 属性で何か不足しているに違いありません。

4

1 に答える 1

10

cfqueryparam に引用符は必要ありません。必要な場合は引用符を使用し、不要な場合は引用符を使用せずにクエリを作成します。これは、cfqueryparam を使用する際の優れた点の 1 つです。

于 2011-09-12T23:34:03.617 に答える