具有多个位置条件错误的 SQL 删除语句



如果不是,请帮助我更正它,这是正确的陈述吗?

String query = "delete from favourite where username=" + 
Session["username"].ToString() + "and id=" + id;

如果你的问题纯粹是关于SQL的,那么是的,你所拥有的将起作用。 但是,正如你所拥有的那样,你有一个非常严重的安全问题。 谷歌"SQL注入攻击"。 我不确定您使用什么进行数据访问(ADO.NET?整体框架? 哒?但无论如何,您都需要使用参数:

var sql = "delete from favourite where username=@username and id=@id";

然后:

cmd.Parameters.AddWithValue("@username", Session["username"].ToString());
cmd.Parameters.AddWithValue("@id", id);

但即便如此,AddWithValue也不是最好的方法,因为一旦查询命中数据库,它可能会导致类型转换问题。 你最好是手做:

var userNameParam = new SqlParameter("username", SqlDbType.VarChar);
userNameParam.Value = Session["username"].ToString();
var idParam = new SqlParameter("id", SqlDbType.Int);
idParam .Value = id;
command.Parameters.Add(salaryParam);
command.Parameters.Add(idParam );

最新更新