我有一个html编辑器,我试图将它生成的html插入到数据库中,然后在另一个页面中检索它,其中是SQL表。 我正在使用带有一个带有asp 3.5 的文本字段的表。这是代码:
MySqlConnection con = new MySqlConnection(@"Connection String ");//I've tested the connection string and its working fine
MySqlCommand cmd = new MySqlCommand("INSERT INTO ins (tes) VALUES ('" + Editor1.Content + "')", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
这是我得到的错误:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'font-size:18pt附近使用正确的语法;线高:115%; font-family:“arial”,“sans-serif”;'> Whatever'在第1行
如何做到这一点?提前谢谢。
答案 0 :(得分:2)
我认为您应该使用参数化查询,并且永远不要信任用户数据条目。请问tes
的类型是什么,您能否澄清什么是错误或异常?
答案 1 :(得分:0)
你打开了很多SQL注入。来自用户的数据应该在结束数据库之前进行检查和消毒。
此外,使用ASP.NET需要从回发中删除任何HTML标记,因为框架会检查来自浏览器的可能的HTML注入。
删除标记(或用<
替换<
)并在服务器中转换回来后,您可以使用以下内容:
MySqlCommand cmd = new MySqlCommand("INSERT INTO ins (tes) VALUES ('" + Editor1.Content.Replace("'", "''") + "')", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
虽然您应该进行参数化查询。
答案 2 :(得分:0)
这样的事可能有用:
MySqlCommand cmd = new MySqlCommand("INSERT INTO ins (tes) VALUES (@text)", con);
cmd.Parameters.Add("@text", SqlDbType.Text);
cmd.Parameters["@text"].Value = txtTextField.Text;
con.Open();
cmd.ExecuteNonQuery();
con.Close();