0

我有一个 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 行

如何才能做到这一点?提前致谢。

4

3 回答 3

2

我认为您应该改用参数化查询,并且永远不要相信用户数据输入。请问 的类型是什么tes,您能否澄清错误或异常是什么?

于 2011-04-19T10:33:54.437 回答
0

并且您对大量 SQL 注入敞开心扉。来自用户的数据应该在最终进入数据库之前进行检查和清理。

此外,使用 ASP.NET,您需要从回发中删除任何 HTML 标记,因为框架会检查来自浏览器的可能的 HTML 注入。

删除标签(或用<类似的东西替换&lt;)并在服务器中转换回之后,您可以使用类似的东西:

MySqlCommand cmd = new MySqlCommand("INSERT INTO ins (tes) VALUES ('" + Editor1.Content.Replace("'", "''") + "')", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

尽管您应该进行参数化查询。

于 2011-04-19T10:35:45.590 回答
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();
于 2011-04-19T10:42:55.140 回答