我有一个将数据插入数据库的大表。问题是当用户编辑我必须的表时:
value="<cfoutput>getData.firstname#</cfoutput>
。有没有办法通过cfc或cfm文件将表单输入框绑定到数据库?
非常感谢,
[R
答案 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时,您不需要这样做。但我可能弄错了。