我在寻找一种方法来正确地将结构数据插入到我的 CF8 数据库中时遇到了一些困难。
我有这样的结构
struct
COMMENTS undefined
DESC 1
正如您所看到的,注释显示的值是未定义的,我现在正在尝试将数据插入到我的数据库中。我的数据库将接受 NULL 值,所以我尝试了以下方法 关于插入参数
INSERT INTO AUDIT
(
COMMENT,
DESC)
VAULES (
<cfqueryparam cfsqltype="cf_sql_varchar" value="#object.COMMENT#" null="#NOT len(trim(object.COMMENT))#">,
<cfqueryparam cfsqltype="cf_sql_numeric" value="#object.DESC#" null="#NOT len(trim(object.DESC))#">,
)
我在 CF 上遇到的错误是
Error Occurred While Processing Request
Element COMMENT is undefined in OBJECT.
我如何处理这个插入数据库?我正在考虑如果对象未定义则将其插入为 null 但不清楚如何执行此操作。
您似乎遇到了错误,因为 COMMENT 键未在您的对象中定义。要处理这种情况并在 COMMENT 键未定义时将 NULL 插入数据库,可以使用 structKeyExists 函数检查该键是否存在于结构中。以下是修改代码的方法:
<cfif structKeyExists(object, "COMMENT")>
<cfset commentValue = object.COMMENT>
<cfelse>
<cfset commentValue = "">
</cfif>
<cfif structKeyExists(object, "DESC")>
<cfset descValue = object.DESC>
<cfelse>
<cfset descValue = "">
</cfif>
<cfquery>
INSERT INTO AUDIT
(
COMMENT,
DESC
)
VALUES
(
<cfqueryparam cfsqltype="cf_sql_varchar" value="#commentValue#" null="#NOT len(trim(commentValue))#">,
<cfqueryparam cfsqltype="cf_sql_numeric" value="#descValue#" null="#NOT len(trim(descValue))#">
)
</cfquery>