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

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

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

这句sql语句有问题吗?

img

  • 写回答

1条回答 默认 最新

  • m0_57781768 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日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助