我正在尝试使用经典ASP更新MySQL中的数据库,但它无法正常工作。有人能告诉我代码中可能有什么问题吗?
IDCliSession = Session("usuarioident")
if IDCliSession <> "" then
IDCliSession = IDCliSession
else
IDCliSession = 0
end if
set cli = conexao.execute("SELECT * FROM clientes WHERE id_cliente = "& IDCliSession &"")
senha_S = request.form("senha")
senha_C = request.form("confsenha")
senha = request.form("confsenha")
if senha1 & "" <> "" or senha2 & "" <> "" then
if senha_S <> senha_C then
response.redirect "Registro.asp?msg=A Senha e a Confirmação de Senha não são iguais. Por favor, preencha novamente!"
end if
end if
loja = "1062"
tipoPe = request.Form("tipo")
email = request.Form("email")
fone1 = request.Form("fonefixo")
fone2 = request.Form("fonecel")
cep = request.Form("cep")
tipo_residencia = request.Form("tipo_residencia")
endereco = request.Form("endereco")
numero = request.Form("numero")
bairro = request.Form("bairro")
complemento = request.Form("complemento")
cidade = request.Form("cidade")
fk_estado = request.Form("estado")
fk_pais = request.Form("pais")
data = Date()
if request.Form("newsletter") = "1" then
newsletter = 1
else
newsletter = 0
end if
conhecimento = request.Form("tipo")
modalidade = request.Form("modalidade")
modalidade_ativa = "0"
comentarios = ""
if not cli.eof then
query = "SELECT * FROM clientes WHERE email='"& Session("mail") &"'"
Set rsCliente = Server.CreateObject("ADODB.RecordSet")
rsCliente.Open query, conexao, 2, 3
rsCliente("tipo") = tipoPe
rsCliente("email") = email
rsCliente("senha") = senha
rsCliente("fone1") = fone1
rsCliente("fone2") = fone2
rsCliente("cep") = cep
rsCliente("tipo_residencia") = tipo_residencia
rsCliente("endereco") =endereco
rsCliente("numero") = numero
rsCliente("fk_pais") = fk_pais
rsCliente("newsletter") = newsletter
rsCliente("conhecimento") = conhecimento
rsCliente("modalidade") = modalidade
rsCliente.Update
rsCliente.Close
Set rsCliente = Nothing
end if
答案 0 :(得分:0)
除了您选择的方法效率低下之外,您是否还可以查看您尝试更新的变量是否实际上与数据库中的数据库索引或主/外键不冲突? 如果您尝试将空字符串传递到设置为非null的字段,则将中止过程。
例如,字段tipoPe = request.Form(&#34; tipo&#34;)或email = request.Form(&#34; email&#34;)可能是您的表格中的必填项或设置为唯一。我没有看到任何验证......
最佳解决方案是使用存储过程,如果失败或成功,将返回一个字符串。 还有什么试图验证她:
senha_S = request.form("senha")
senha_C = request.form("confsenha")
senha = request.form("confsenha")
if **senha1** & "" <> "" or **senha2** & "" <> "" then
if senha_S <> senha_C then
senha1 和 senha2 来自哪里? 对于密码验证,下面的内容就足够了:
if senha_S <> senha_C and len(senha_S)<8 then
使用len(senha_S)&lt; 8您还可以强制执行最小的密码长度。 另外,我建议您在重定向中进行以下更改:
response.redirect "Registro.asp?msg='A Senha e a Confirmação de Senha não são iguais. Por favor, preencha novamente!'"
否则,您可能会在重定向页面上只收到一小部分邮件,例如只有第一个字母A.