2010-12-20 18 views
0

我正在使用ColdFusion将结构(键值对)的内容插入到数据库表中。这是我的代码:我的简单插入有什么问题?

<cfloop collection="#results#" item="ID" > 
    <cfquery name="insertStuff" datasource="myDataSource"> 
     INSERT INTO web..Stuff (ID, Name) 
     VALUES (#ID#, #results[ID]#) 
    </cfquery> 
</cfloop> 

这看起来很简单......但我发现了以下错误:

Incorrect syntax near 'VA'. 

任何想法?

回答

10

你真的应该想想也是参数化的数据。

<cfloop collection="#results#" item="ID" > 
    <cfquery name="insertStuff" datasource="myDataSource"> 
     INSERT INTO web..Stuff (ID, Name) 
     VALUES (
      <cfqueryparam cfsqltype="cf_sql_varchar" value="#ID#">, 
      <cfqueryparam cfsqltype="cf_sql_varchar" value="#results[ID]#">) 
    </cfquery> 
</cfloop> 
+0

对于史蒂夫的观点,使用cfqueryparam会为你做很多事情。它会引用字符串“VA”,同时保护你免受一大堆坏事。即使在Intranet应用程序中,您也要这样做。 – 2010-12-20 11:45:56

+0

好点...谢谢。我一定会尝试这个。经过长时间的休息后,我又回到了cf ......所以我忘了很多东西:) – froadie 2010-12-20 12:09:11

2

我想我可能已经解决了它......忘了引号,并且他们都VARCHAR字段: -/

<cfloop collection="#results#" item="ID" > 
    <cfquery name="insertStuff" datasource="myDataSource"> 
     INSERT INTO web..Stuff (ID, Name) 
     VALUES ('#ID#', '#results[ID]#') 
    </cfquery> 
</cfloop> 
+0

我仍然会这样做CFQueryParam。 – 2011-01-05 17:41:38

+0

完全同意。 CFQueryParam绝对是一个最佳实践。我使用CFEclipse的Snippets插入它们变得轻而易举(它们可能很难打字)。 – 2011-01-05 20:25:53