为什么在ColdFusion中未定义插入和更新查询名称变量

时间:2014-03-31 10:05:44

标签: mysql coldfusion coldfusion-9

我正在开发ColdFusion9和MySQL 5.0。我不确定为什么查询名称变量在插入和更新查询中未定义,即使我在查询之前声明了这些变量。这是示例代码。

<cfset variables.test_update = QueryNew('')>
<cfset variables.res = ''>
<cfquery name="variables.test_update" datasource="dsnTest" result="variables.res">
    INSERT INTO test(
        name
        , rank
    )VALUES(
        'test'
        ,23
    )
</cfquery>
<cfdump var="#variables.res#">
<cfdump var="#variables.test_update#">

此处结果属性值可用,但对于查询名称变量,它抛出未定义的错误,&#34;元素TEST_UPDATE在VARIABLES中未定义。&#34;

我知道,insert,update和delete查询不会通过查询名称属性返回任何结果集。但是,我不确定,为什么在查询执行后查询名称变量是否未定义?

请帮忙。

2 个答案:

答案 0 :(得分:7)

ColdFusion使用从DB驱动程序返回的任何内容填充variables.test_update,在本例中为[nothing]。

CF认为null变量未定义。永远有。

答案 1 :(得分:0)

除了Adam所说的,如果你想为新记录返回新的ID(如果你的表设置为处理这个),你可以按如下方式更改它:

INSERT INTO test(
    name
    , rank
)VALUES(
    'test'
    ,23
);
Select LAST_INSERT_ID() as newid;

如果您转储&#34; variables.test_update&#34;,您会看到它现在不为空,为列#34; newid&#34;返回一行。