sql delete语句有多个where条件错误

sql delete statements with multiple where condition error

这个说法正确吗,如果不正确请帮我改正。

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

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

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 );