使用Classic ASP更新并插入MySQL

时间:2014-04-19 13:19:49

标签: mysql asp-classic mysql-workbench

我正在尝试使用经典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

1 个答案:

答案 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.