我正在尝试使用 c# ASP.NET 和 MySQL 创建一个简单的站点搜索,并且我正在尝试使用参数化查询来防止 SQL 注入。那里已经有很多信息,但我仍然无法让它工作,任何人都可以看到我的代码有什么问题吗?有没有我没有引用的图书馆?
这是我当前的代码:
using MySql.Data.MySqlClient;
string q = Request["q"].IsEmpty() ? "" : Request["q"];
List<dynamic> MyList = new List<dynamic>();
using(MySqlConnection con = new MySqlConnection("server=localhost;database=database;user id=user;password=password"))
{
string sql = "SELECT * FROM Items WHERE Name = @Name";
con.Open();
MySqlCommand cmd = new MySqlCommand(sql,con);
cmd.Parameters.AddWithValue("@Name", q);
MySqlDataReader reader = cmd.ExecuteReader();
while(reader.Read()){
MyList.Add(new {
Value = reader["Value"].ToString()
});
con.Close();
}
如果我将 sql 参数换成数据库中的实际值,它会返回项目,如下所示:
string sql = "SELECT * FROM Items WHERE Name = 'aValue'";