1

我有一个将数据插入数据库的大表。问题是当用户编辑表时我必须:

  1. 运行查询
  2. 在输入框中使用很多行value="<cfoutput>getData.firstname#</cfoutput>

有没有办法通过 cfc 或 cfm 文件将表单输入框绑定到数据库?

非常感谢,

R

4

5 回答 5

0

如果您使用的是 CF 9,则可以使用本在线章节 https://www.packtpub.com/sites/default/files/0249-chapter-4-ORM中所述的 ORM(对象关系管理)功能(通过 CFC) -Database-Interaction.pdf (从 pdf 的第 6 页开始)

于 2010-09-22T18:41:10.507 回答
0

查询对象包括 columnList,它是以逗号分隔的返回列列表。

如果安全性和可读性不是问题,您可以随时循环。但是,它基本上消除了您执行锁定某些列之类的操作的机会,降低了您进行任何验证的能力,这意味着您要么只用列名标记表单框,要么找到一种方法来存储每列的标签。

然后,您可以对它们进行插入/更新/任何操作。

我不建议这样做,因为它几乎不可能确保安全,但它可能会让你到达你要去的地方。

于 2010-09-22T18:37:26.497 回答
0

看一下<cfgrid>,如果您正在编辑表格,这将是最简单的,并且每行可以触发 1 次更新。

对于 XSS 的安全性,您应该使用<input value="#xmlFormat(getData.firstname)#">, 最小化 # of <cfoutput>tags。 XmlFormat()如果您使用<cfinput>.

于 2010-09-22T19:32:21.327 回答
0

如果您正在寻找一种无需在插入查询中指定所有列名的简单方法,cfinsert 将尝试将您提交的所有表单名称映射到数据库列名。

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c78.html

于 2010-09-26T21:50:38.587 回答
0

这确实是一个非常好的问题。我毫不怀疑到目前为止给出的答案是有帮助的。我遇到了同样的问题,只是我的表没有那么多字段。

根据文档EntityNew(),语法显示您可以在实例化对象时包含数据:

  artistObj = entityNew("Artists",{FirstName="Tom",LastName="Ron"});

而不必实例化然后逐个字段添加数据。就我而言,我所要做的就是:

  artistObj = entityNew( "Artists", FORM );
  EntitySave( artistObj );
  ORMFlush();

注意 从您的问题中确实可以看出您可能正在运行插入或更新查询。使用 ORM 时,您不需要这样做。但我可能弄错了。

于 2017-08-17T19:13:48.463 回答