我收到此错误:
参数'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
答案 0 :(得分:1)
我无法发现您的代码有什么问题,但您也许可以清理 事情有点儿。无需在查询中设置每个“属性” 单独:blog.adamcameron.me/2014/01/
遵循序数参数,而不是命名参数,并且以压缩格式传递参数数组,解决了我的问题。
我可以使用name属性来查看它是否正确,或者我可以将其作为解决方案处理。
现在,要更改我的所有脚本查询!!!!! (我希望他的文章出现在google上,当我查看query.cfc语法时。:(
非常感谢Adam!