创建例程以检查用户是否在 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 注入攻击的方法
在包含检查用户 "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 注入攻击的方法