创建例程以检查用户是否在 BD 注册后出现错误

Aafter create a routine to check if user is registred at BD get error

在包含检查用户 "Usuario" 是否在数据库中注册的例程后,我从任何导航器收到以下错误消息:

错误“80020009” /novo.asp,第 31 行

基本的套路是

set verificar = conexao.execute ("select Usuario from empresas")
while not verificar.eof

verificar.movenext

if  Cadastrar_CodEmpresa = verificar("Usuario")   Then
              response.Redirect("index.asp?pagina=login") 



if not verificar.eof Then

verificar.movenext
    End if


 set cadastrar_cadastro = conexao.execute("insert into Empresas (Usuario,Telefone) Values ('" & Cadastrar_CodEmpresa & "' , '" & Cadastrar_Telefone & "')")



    End if  Wend

遵循我的完整代码:

 if request.Form("commentForm") = "sim" then



Cadastrar_CodEmpresa = request.Form("CodEmpresa")
Cadastrar_Segmento = request.Form("Segmento")
Cadastrar_Endereco = request.Form("Endereco")
Cadastrar_Bairro = request.Form("Bairro")
Cadastrar_Cidade = request.Form("Cidade")
Cadastrar_CEP = request.Form("CEP")
Cadastrar_Pais = request.Form("Pais")
Cadastrar_Contato = request.Form("Contato")
Cadastrar_Telefone = request.Form("Telefone")
Cadastrar_Email = request.Form("email")


set verificar = conexao.execute ("select Usuario from empresas")
while not verificar.eof

verificar.movenext

if  Cadastrar_CodEmpresa = verificar("Usuario")   Then
              response.Redirect("index.asp?pagina=login") 



if not verificar.eof Then

verificar.movenext
    End if


 set cadastrar_cadastro = conexao.execute("insert into Empresas (Usuario,Telefone) Values ('" & Cadastrar_CodEmpresa & "' , '" & Cadastrar_Telefone & "')")



    End if  Wend

如果记录集字段为空,您似乎会收到该错误消息。我相信您正在尝试做的是将用户重定向到登录页面(如果他已经注册),否则将新记录插入数据库。有一种更简单的方法

set verificar = conexao.execute ("select * from empresas where Usuario = '"& Cadastrar_CodEmpresa &"'")

If not (verificar.eof and verificar.bof) Then
    verificar.close
    response.Redirect("index.asp?pagina=login")
Else
    verificar.close
    conexao.execute("insert into Empresas (Usuario,Telefone) Values ('" & Cadastrar_CodEmpresa & "' , '" & Cadastrar_Telefone & "')")
End If

这样做的逻辑是,如果表单值 "Codempressa" 与数据库中的值不匹配,您将得到一个空记录集并发生数据库插入,如果该值确实匹配,那么您将得到一个重定向。

我应该在您插入数据时添加一个警告 - 如果这是一个 public 对开页面,那么您需要考虑防范 sql 注入攻击的方法