【问题标题】:Syntax error in UPDATE statement. What is wrong with the code?UPDATE 语句中的语法错误。代码有什么问题?
【发布时间】:2019-06-11 13:26:40
【问题描述】:

我正在尝试从网络更新我的数据库,但它不起作用,我不知道为什么。它说:“无效的回发或回调参数。使用配置或页面中的 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来自“ 我需要做什么?

string MySQL = @"UPDATE users 
             (email, pname, accountname, pid, age, passw) 
             Set(@email, @pname,@account,@pid, @age, @passw) where 
(id='"+Request.Form["id"]+"')";
    string strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data 
Source=" + 
System.Web.HttpContext.Current.Server.MapPath(@"DataBase\Users.accdb");
    using(System.Data.OleDb.OleDbConnection con = new  
System.Data.OleDb.OleDbConnection(strConnection))
    using(System.Data.OleDb.OleDbCommand cmd = new  
System.Data.OleDb.OleDbCommand(MySQL, con))
    {
        con.Open();
        cmd.Parameters.Add("@email",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["email"];
        cmd.Parameters.Add("@pname",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["pname"];
        cmd.Parameters.Add("@account",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["accountname"];
        cmd.Parameters.Add("@pid",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["pid"];
        cmd.Parameters.Add("@age",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["age"];
        cmd.Parameters.Add("@passw",  
System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["passw"];
        cmd.ExecuteNonQuery();
        con.Close();
    }
    Response.Redirect("showalldata.aspx");

【问题讨论】:

    标签: asp.net web sql-update


    【解决方案1】:

    您的UPDATE 语句语法错误。所以它会抛出语法错误。

    与其在WHERE 子句中直接将Request.Form["id"] 分配给id 列,不如将其分配给cmd.Parameters.Add。因为SQL注入攻击是可能的。

    下面的查询将起作用。

     string MySQL = @"UPDATE users SET 
             email = @email,
             pname = @pname, 
             accountname= @account, 
             pid = @pid, 
             age = @age,
             passw = @passw 
     where id = @paramid ";
    
     ...
     ...
    
     cmd.Parameters.Add("@paramid",  
       System.Data.OleDb.OleDbType.VarWChar).Value = Request.Form["id"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      相关资源
      最近更新 更多