coldfusion - 将表单绑定到数据库

时间:2010-09-22 18:24:15

标签: forms binding coldfusion cfc

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

  1. 运行查询
  2. 在输入框中使用许多行,例如value="<cfoutput>getData.firstname#</cfoutput>
  3. 有没有办法通过cfc或cfm文件将表单输入框绑定到数据库?

    非常感谢,

    [R

5 个答案:

答案 0 :(得分:0)

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

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

然后,您可以使用它们执行插入/更新/任何操作。

我不建议这样做,因为它几乎不可能保证,但它可能会让你到达目的地。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

为了防范XSS,您应该使用<input value="#xmlFormat(getData.firstname)#">,最小化<cfoutput>个标记。如果您使用XmlFormat(),则不需要<cfinput>

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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

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

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

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

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