coldfusion 9,使用cfscript查询时找不到params

时间:2015-06-22 05:10:08

标签: coldfusion-9 cfml

我收到此错误:

参数'user_id AND league_id'未在指定参数列表中找到

我正在传递它们,我可以在函数内部的转储中看到它们。

这里有什么......

writedump( Game.saveGame( argumentcollection = ac ) );

这是抛出错误的转储......

public any function saveGame( required numeric league_id, required numeric user_id, required numeric score1, required numeric score2 ) {

    // writeDump( var=arguments ); // this dump shows league_id & user_id...
    var sql     = '';
    var tmp     = '';
    var r       = '';
    var q       = new query();

        q.setDatasource( this.dsn );

        q.addParam(
                name = 'league_id'
                ,value = '#val( arguments.league_id )#'
                ,cfsqltype =  'CF_SQL_BIGINT'
            );
        q.addParam(
                name = 'user_id'
                ,value = '#val( arguments.user_id )#'
                ,cfsqltype =  'CF_SQL_BIGINT'
            );
        q.addParam(
                name = 'score1'
                ,value = '#val( arguments.score1 )#'
                ,cfsqltype =  'CF_SQL_SMALLINT'
            );
        q.addParam(
                name = 'score2'
                ,value = '#val( arguments.score2 )#'
                ,cfsqltype =  'CF_SQL_SMALLINT'
            );

        sql = 'INSERT INTO
                games
                (
                    user_id
                    ,league_id
                    ,score1
                    ,score2
                )
            VALUES
                (
                    :user_id
                    ,:league_id
                    ,:score1
                    ,:score2
                )
        ';

        tmp = q.execute( sql = sql );

        r = tmp.getPrefix( q ); 

        q.clearParams();

    return r;

}

这是Game.saveGame函数

try {
                    ArrayList<String> _pics = new ArrayList<String>();
                    JSONObject _jObject = new JSONObject("YOUR_JSON_STRING");
                    JSONArray _picArr  = _jObject.getJSONArray("picurl");
                    for (int i = 0; i < _picArr.length(); i++) {

                        String _picPath  = _picArr.getString(i);
                        _pics.add(_picPath);

                    }
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

以下是该问题的一些历史记录 - 我在本地编写这个,我的系统正在运行CF 11.2 - 一切正常......但是,我必须在CF 9.02服务器上托管它,这就是当这个错误出现时 - 我无法在我的系统上重新创建它,尽管如此,我记得以前看过这个错误,但对于我的生活,我无法找到我如何解决它......

感谢任何帮助或见解。

其他参数 Windows服务器,MySQL 5.5,Apache 2.2

1 个答案:

答案 0 :(得分:1)

亚当写道:

  

我无法发现您的代码有什么问题,但您也许可以清理   事情有点儿。无需在查询中设置每个“属性”   单独:blog.adamcameron.me/2014/01/

遵循序数参数,而不是命名参数,并且以压缩格式传递参数数组,解决了我的问题。

我可以使用name属性来查看它是否正确,或者我可以将其作为解决方案处理。

现在,要更改我的所有脚本查询!!!!! (我希望他的文章出现在google上,当我查看query.cfc语法时。:(

非常感谢Adam!