I am currently storing form data in an XML format:
<cfsavecontent variable="myFormData">
<cfoutput>
<ul class="xoxo">
<cfloop list="#form.fieldnames#" index="item">
<cfloop list="#form[item]#" index="eachItem">
<li><b>#xmlformat(item)#</b> <var>#xmlformat(eachItem)#</var>
</cfloop>
</cfloop>
</ul>
<cfoutput>
</cfsavecontent>
Then do a single insert:
<cfquery>
INSERT INTO table (formData)
VALUES (<cfqueryparam value="#myFormData#" cfsqltype="cf_sql_varchar">)
</cfquery>
When I pull the data out, I can:
<cfquery name="qryData">
SELECT formData
FROM table
WHERE ID = <cfqueryparam value="#ID#" cfsqltype="cf_sql_integer">
</cfquery>
<cfoutput query="qryData">#formData#</cfoutput>
OR
<cfquery name="qryData">
SELECT li.value('(b/text())[1]', 'varchar(50)') AS Item,
li.value('(var/text())[1]', 'varchar(50)') AS Value
FROM table
CROSS APPLY XmlData.nodes('/ul/li') AS ul(li)
WHERE ID = <cfqueryparam value="#ID#" cfsqltype="cf_sql_integer">
</cfquery>
<cfoutput query="qryData">#Item# #Value#</cfoutput>
Some developers have concerns about storing the data in this format. Is this the best way to store arbitrary form data?