我正在将queryObject传递到CFC中。我可以writeDump(myQryObject),我看到queryObjects的内容,到目前为止一切都很好。我可以编写一条select语句并根据我的查询转储一行(再次),这一切都很好。我现在需要将数据插入表中,但是语法不正确。
CFC用CFScript编写。
local.blkLoadQry = new Query(); // new query object
local.blkLoadQry.setDBType("query");
local.blkLoadQry.setAttributes(sourceQuery=arguments.blkdata);
local.blkLoadQry.addParam(name="batchid",value=arguments.batchID,cfsqltype="cf_sql_varchar",maxlength="36");
local.blkLoadQry.setSQL("
INSERT INTO bulkloadtemptable (
uuid
, gradyear
, firstName
, lastName
, email
)
SELECT
:batchid
, `Graduation Year`
, `Jersey`
, `First Name`
, `Last Name`
, `Email`
FROM
bulkloadtemptable_copy
WHERE uuid = :batchid
");
`Lexical error at line 10, column 17. Encountered: "`" (96), after : ""`
这是我遇到的错误,但是错误的行号与我的期望不符,这就是将我带到这里的原因。 :batchid将是第10行。
我想念什么?
最佳答案
您正在尝试一些不可能的事情。您的查询select语句查询仅在ColdFusion中运行。没有数据库连接在起作用。
如果要将ColdFusion查询中的数据插入数据库,则必须以某种方式遍历所有行。您可以在循环中包含插入查询,也可以在插入查询中包含循环。这是两者的示例语法。
在循环内查询。
<cfoutput query="cfQueryObject">
<cfquery datasource = "aRealDatabase">
insert into table
(field1
, field2
, etc)
values
(<cfqueryparam value = "#cfQueryObject.field1#">
, <cfqueryparam value = "#cfQueryObject.field1#">
, etc
)
</cfquery>
</cfoutput>
循环查询
<cfquery datasource = "aRealDatabase">
insert into table
(field1
, field2
, etc)
select null
, null
, etc
from someSmallTable
where 1 = 2
<cfoutput query="cfQueryObject">
union
select <cfqueryparam value = "#cfQueryObject.field1#">
, <cfqueryparam value = "#cfQueryObject.field1#">
, etc
from someSmallTable
</cfoutput>
</cfquery>
您可以尝试看看哪种情况更适合您的情况。
关于mysql - 查询cf queryObject并插入表中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46800296/