我没有输入任何内容时插入空记录

trl*_*wis 1 coldfusion null cfquery

我正在尝试首先检查NULL,如果值为NULL,则跳过INSERT.但这不是正在发生的事情.即使我没有在表单字段中输入任何内容,代码也会插入NULL记录.这几乎就像是在认识到不存在的东西.

<cfoutput>
<cfif form.TBCom is not ""> 
    <cfquery name="TestTBComm" datasource="TrenaTest">
        INSERT INTO Comment1 (
            UniqueNum,
            ComTyp,
            Comments )
        SELECT 
           '#UniqueNum#',
           '#TBComV#',
           '#TBCom#'
    </cfquery>
</cfif>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

Mik*_*yer 6

以前的答案是正确的,因为在测试一般字符串时,NULL检查不适用于CF. 你要么测试长度或价值.

那个问题让我感到害怕,以为我认为一个完整的例子是必要的.必须将用户提供数据的查询的每个字段都包含在CFQUERYPARAM中.查找术语" sql注入 "的原因.

此查询应该适合您:

<cfquery name="TestTBComm" datasource="TrenaTest">
    INSERT INTO Comment1 (
        UniqueNum,
        ComTyp,
        Comments )
    VALUES (
        <cfqueryparam cfsqltype="cf_sql_integer" value="#FORM.UniqueNum#">
        , <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.TBComV#" NULL="#!Len(FORM.TBComV)#">
        , <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.TBCom#" NULL="#!Len(FORM.TBCom)#">
    )
</cfquery>
Run Code Online (Sandbox Code Playgroud)

在NULL参数中,请注意"!",它反转LEN()函数的结果.