我已经看到了一些答案,但我的查询有点不同:
这是一个原始查询:
cmd.CommandText = "select count(Table1.UserID) from Table1 INNER JOIN
Table2 ON Table1.ID = Table2.ID where Table1.Userid = " + UserID + " and
Table1.Number != '" + Number +"' and Table2.ID < 4";
这是 SQL 注入的修改查询:
cmd.CommandText = "select count(Table1.UserID) from Table1 INNER JOIN
Table2 ON Table1.ID = Table2.ID where Table1.Userid = @userId and
Table1.ID != @Number and Table2.ID < 4";
如果您能注意到,第一个查询UserId
用双引号括起来:..." + UserID +"...
而 Number
us 用单引号和双引号括起来:...'" + Number + "'...
这是我设置参数的方式:
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@Number", Number);
cmd.Parameters.AddWithValue("@userId",UserID);
其中UserID
是一个整数,Number
是一个字符串。
所以,我的问题是,修改后的查询格式是否正确?@UserId
考虑到原始查询中指定的不同方式,如何将@Number
参数放入查询中是否有任何区别?