mysql - 使用经典 ASP 更新和插入 MySQL

标签 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

最佳答案

除了您选择的方法效率低下之外,您是否还可以看看您尝试更新的变量是否实际上与数据库索引或数据库中的主/外键不冲突? 如果您尝试将空字符串传递到设置为非空的字段中,它将中止过程。

例如,字段 tipoPe = request.Form("tipo") 或 email = request.Form("email") 可能是表中的必填字段或设置为唯一字段。我没有看到任何验证...

最好的解决方案是使用存储过程,它会在失败或成功时返回一个字符串。 还有你试图验证她什么:

 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

senha1senha2来自哪里? 对于密码验证,以下内容就足够了:

 if senha_S <> senha_C and len(senha_S)<8 then

使用 len(senha_S)<8 您还可以强制执行密码的最小长度。 另外,我建议您对重定向进行以下更改:

 response.redirect "Registro.asp?msg='A Senha e a Confirmação de Senha não são iguais. Por favor, preencha novamente!'"

否则,您可能会在重定向页面上仅收到消息的一小部分,例如仅第一个字母 A。

关于mysql - 使用经典 ASP 更新和插入 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23170560/

相关文章:

mysql-workbench - 如何在MySql Workbench中运行sql文件而不加载它?

MySQL 在 Debug模式下连接失败

php - SQL SELECT 查询导致不同的列错误

javascript - 使用 JavaScript 合并两个 HTML 行

MySQL Workbench - 在单个图表中工作时 EER 模型中的所有图表都会更新

mysql - MySQL 错误 1215

mysql - 另一个 mysql 减号问题

php - 如果尚未定义新列,是否会使用 php 函数 "insert into"创建新列,或者返回错误?

asp-classic - "Microsoft VBScript runtime error ' 800a000d ' ' 800a000d'

asp.net-mvc - 如何设置 MVC 路由来处理旧的 ASP 经典页面重定向