【发布时间】:2021-04-19 07:12:15
【问题描述】:
我正在尝试将 SQL Server 的简单插入或更新为 NULL,而不是空白。我在网上看到很多参考资料只是设置 Field = NULL 不带引号,但它仍然是空的,而不是 NULL。令人难以置信的沮丧。
这是经典的asp。
If Request.Form("Field") = "" or IsNull(Request.Form("Field")) then
Field = NULL
Else
Field = Request.Form("Field")
End If
sSql="UPDATE [table] SET timestamp = {fn NOW()}," &_
"Field = '" & Field & "'," &_
"WHERE [System] = '" & System & "' and Active = '1'"
如果我这样做,它证明它正在检查,因为它输入了一个 1。
If Request.Form("Field") = "" or IsNull(Request.Form("Field")) then
Field = 1
Else
Field = Request.Form("Field")
End If
sSql="UPDATE [table] SET timestamp = {fn NOW()}," &_
"Field = '" & Field & "'," &_
"WHERE [System] = '" & System & "' and Active = '1'"
我试过了,但收到错误 500:
sSql="UPDATE [Table] SET timestamp = {fn NOW()}, Field = "
If IsNull(Field) Then
sSQL = sSQL & "NULL"
Else
sSQL = sSQL & "'" & Field & "'" &_
End If
"NTLogon = '" & UCase(NTLogon) & "'" &_
"WHERE [System] = '" & System & "' and Active = '1'"
当我尝试这个代替我的原始代码时: 字段分配:
Field = "NULL" and Field = "'" & Request.Form("Field") & "'"
sSQL:
"Field = " & Field & "," &_
我收到“处理 URL 时服务器发生错误。”
【问题讨论】:
-
在您做任何其他事情之前,您需要阅读、理解并开始使用参数化查询。这是一个教科书式的sql注入示例。
-
确保您的表没有该列的默认值为空。然后只需设置
Field = "NULL"和Field = "'" & Request.Form("Field") & "'"并将sql 更改为"Field = " & Field & "," &_然后意识到您应该使用参数化查询并再次改变它