syy799syy 2022-12-29 22:26 采纳率: 85.7%
浏览 26
已结题

附近有语法错误,如何解决?

    string sql = "update BookInfo set Bname = '" + Bname + "',ISBN='" + isbn + "',publisher='" + publisher + "',sl='" + sl + "',price='" + price + "' where id =" + Request.QueryString["id"];

这句sql语句有问题吗?

img

  • 写回答

1条回答 默认 最新

  • 普通网友 2022-12-30 00:12
    关注

    您提供的 SQL 语句存在一些潜在问题:

    • SQL 注入漏洞:您提供的 SQL 语句将用户输入直接连接到字符串中,而没有对其进行适当的清理。这会使您的数据库容易受到 SQL 注入攻击,恶意用户可能会在您的数据库上执行任意 SQL 命令。为防止这种情况,您应该使用准备好的语句和参数化查询来正确转义和清理用户输入。
    • 单引号和双引号使用不一致:SQL 语句在某些地方使用单引号将字符串值括起来,而在其他地方使用双引号。如果处理不当,这可能会导致语法错误。在整个 SQL 语句中始终使用单引号或双引号通常是一种很好的做法。
    • 可能的语法错误:SQL 语句在子句中的id值周围使用了单引号,但不是字符串值。如果是整数或数值,则不应将其括在引号中。whereidid

    下面是一个示例,说明如何使用准备好的语句和参数化查询重写 SQL 语句来解决这些问题:

    string sql = "update BookInfo set Bname = @Bname, ISBN = @ISBN, publisher = @publisher, sl = @sl, price = @price where id = @id";
    
    using (SqlCommand cmd = new SqlCommand(sql, con))
    {
      cmd.Parameters.AddWithValue("@Bname", Bname);
      cmd.Parameters.AddWithValue("@ISBN", isbn);
      cmd.Parameters.AddWithValue("@publisher", publisher);
      cmd.Parameters.AddWithValue("@sl", sl);
      cmd.Parameters.AddWithValue("@price", price);
      cmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);
    
      cmd.ExecuteNonQuery();
    }
    
    

    答题不易,求求您采纳哦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 创建了问题 12月29日