从cfscript中的coldfusion newQuery()获取结果元数据

2024-03-12

关于 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未定义


你正在得到result首先查询的属性,然后从中尝试获取prefix结果中的属性。但这种情况并非如此。您可以直接获取prefix属性,然后生成密钥,如下所示:

tmp.getPrefix().generatedkey;

作为参考,您可以查看此博客条目:从 ColdFusion 中的查询获取生成的密钥(包括基于脚本的查询) http://blog.bittersweetryan.com/2011/01/getting-generated-key-from-query-in.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从cfscript中的coldfusion newQuery()获取结果元数据 的相关文章

随机推荐