对具有空值的int列执行MS SQL更新查询


MS SQL update query on int column with an empty value

我的表有两列-col1(int,null)和col2(int,null),我希望能够用空值或null语句更新它们。

我的代码看起来像:

            $newkeylimit = $allkeylimits[$row['Group_ID']];
            if($newkeylimit == ''){ $newkeylimit = NULL ; }
            $newproflimit = $allproflimits[$row['Group_ID']];                               
            if($newproflimit == ''){ $newproflimit = NULL ; }
            $sql = "UPDATE ".$mssql_table_prefix."Groups SET Group_Name = '".$newgroupname."', col1 = '".$newkeylimit."', col2 = '".$newproflimit."' WHERE Group_ID = '".$row['Group_ID']."'";
            $result = mssql_query($sql)
                or die( "<strong>ERROR: Group update query failed</strong>" );

在代码执行之后,我在假设为空值或NULL的每列中得到0。col1和col2的默认值设置为NULL。

知道我做错了什么吗?感谢

不能设置为"NULL"。改为设置为NULL。试试这个。

        $newkeylimit = $allkeylimits[$row['Group_ID']];
        if($newkeylimit == "''"){ $newkeylimit = "NULL" ; }
        $newproflimit = $allproflimits[$row['Group_ID']];                               
        if($newproflimit == '""'){ $newproflimit = "NULL" ; }
        $sql = "UPDATE ".$mssql_table_prefix."Groups SET Group_Name = '".$newgroupname."',                col1 = ".$newkeylimit.", col2 = ".$newproflimit." WHERE Group_ID = '".$row['Group_ID']."'";

您正在向服务器传递一个字符串,而不是NULL。去掉col1和col2的撇号(')。