我已经设置了一个编辑器将其内容输入到数据库中,然后我可以检索并编辑它并再次保存它,这是我使用的:
string user = Page.User.Identity.Name;
MySqlConnection conn = new MySqlConnection(@"connection string;");
MySqlCommand cmd = new MySqlCommand("UPDATE copy SET cv='" + '"' + Editor1.Content.Replace("'", "''") + '"' + "' WHERE id = '" + user + "' ", conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
插入和选择工作正常,但更新没有,它不会给出错误但它不会改变内容(无论我改变它总是保持相同的内容);
我知道这对sql注入是开放的,我应该切换到参数化查询,我会在工作之后做到这一点
我正在使用asp.net 3.5,mysql 5.0
我已经确定了问题并用它提出了一个新问题 谢谢大家的帮助
答案 0 :(得分:0)
为什么它不起作用并不重要,这是完全错误的。
您对SQL injection attacks持开放态度,这应该是您首先关注的问题。
您可以通过使用参数来解决此问题,例如:
MySqlCommand cmd = new MySqlCommand("UPDATE copy SET cv=?cv WHERE id = ?id", conn);
cmd.Parameters.AddWithValue("cv", Editor1.Content);
cmd.Parameters.AddWithValue("id", user);
答案 1 :(得分:0)
ExecuteNonQuery应该返回受影响的行数,记住这一点你可以调试代码。我们可以帮你写一下你用字符串生成的sql语句吗?
除此之外我想到的第一件事是id ='user'可能不正确,id表示一个整数,但名称看起来像是一个字符串值。