关于 CFscript 的文档在文档中有点稀疏,并且搜索 cfscript 特定答案会在 CF 标签答案中丢失。所以这是我的问题:
如何从使用脚本执行的查询中获取结果元数据?使用我可以添加的标签result="myNamedResultVar"
到我的 cfquery.然后我可以参考查询name
对于数据,或myNamedResultVar
对于一些元数据。但是,现在我尝试用脚本编写所有内容,因此我的组件是基于脚本的,从上到下。我最终想要的是 MySQL 插入中最后插入的 ID。该 ID 存在于result
元数据。
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
未定义