在文档中,关于CFscript的说明有点匮乏,搜索关于cfscript特定问题的答案会淹没在CF标签答案中。因此,这是我的问题:
如何从使用脚本执行的查询中获取结果元数据?使用标签,我可以在我的cfquery中添加result="myNamedResultVar"
。然后,我可以引用查询name
以获取数据,或者引用 myNamedResultVar 以获取一些元数据。但是,现在我正在尝试用脚本编写所有内容,因此我的组件基于脚本,自上而下。我最终要做的是从MySQL插入中获取最后插入的ID。该ID存在于
结果
元数据中。
myNamedResultVar.getPrefix().generatedkey
这是我的查询代码:
public any function insertUser( required string name, required string email, required string pass ) {
// insert user
var sql = '';
var tmp = '';
var q = new query();
q.setDatasource( application.dsn );
q.addParam(
name='name'
,value='#trim( arguments.name )#'
,cfsqltype='CF_SQL_VARCHAR'
);
q.addParam(
name='email'
,value='#trim( arguments.email )#'
,cfsqltype='CF_SQL_VARCHAR'
);
q.addParam(
name='pass'
,value='#hashMyString( arguments.pass )#'
,cfsqltype='CF_SQL_VARCHAR'
);
sql = 'INSERT INTO
users
(
name
,email
,pass
,joined
,lastaccess
)
VALUES
(
:name
,:email
,:pass
,CURRENT_TIMESTAMP
,CURRENT_TIMESTAMP
);
';
tmp = q.execute( sql=sql );
q.clearParams();
}
我该如何指定结果数据?我尝试了这样的方式:
...
tmp = q.execute( sql=sql );
var r = tmp.getResult();
r = r.getPrefix().generatedkey;
q.clearParams();
return r;
然而,在插入操作中,getResult()
似乎返回NULL。因此,在插入操作后,r.getPrefix().generatedkey
不起作用。我得到了r
未定义的错误。
r.getPrefix().generatedkey
将获取已插入记录的ID。 - Beginner