尝试运行SQL查询,我被告知使用Parameters来避免SQLInjection。所以我正在玩参数化查询。但它并没有那么好。
这是我的代码:
using (_cmd = _connection.CreateCommand())
{
_connection.Open();
_cmd.CommandText = "SELECT * FROM `users` WHERE `username`= '@username'";
_cmd.Parameters.AddWithValue("@username", _username);
}
据我所知,@ username将替换为我的用户名字段。但事实并非如此,不确定我做错了什么。
答案 0 :(得分:3)
您已将参数转换为查询中的字符串文字。
从@username
左右删除撇号:
_cmd.CommandText = "SELECT * FROM `users` WHERE `username`= @username";
答案 1 :(得分:3)
从'@username'
删除引号,否则它将被视为字符串文字。
_cmd.CommandText = "SELECT * FROM `users` WHERE `username`= @username";