【发布时间】:2011-07-28 14:49:07
【问题描述】:
大家好,我的代码没有错误,但是当我尝试下面的插入语句时似乎什么也没发生?
不确定是我如何包装我的文本框还是我的 FriendID 查询字符串?
protected void Button1_Click(object sender, EventArgs e)
{
string friendid = Request.QueryString["FriendID"];
string theUserId = Session["UserID"].ToString();
using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=***; User=***; Password=***;"))
{
cn.Open();
using (OdbcCommand cmd = new OdbcCommand("INSERT INTO WallPosting (UserID, Wallpostings, FriendUserID) VALUES (" + friendid + ", '" + TextBox1.Text + "', " + theUserId + ")", cn))
{
cmd.ExecuteNonQuery();
}
}
PopulateWallPosts(friendid);
}
}
【问题讨论】:
-
一方面,您需要修复这个主要 SQL 注入漏洞。 特别是,如果您的网站正在使用
root用户(它确实不应该使用)。就目前而言,您的数据库没有被修改这一事实是非常幸运的。 -
也许可以尝试一下...catch 看看你是否到达 catch 块并检查 ex.message。
-
调试时会发生什么?
cmd.ExecuteNonQuery()会被调用吗?当它执行时,命令的文本是什么? (由于您正在使用字符串连接,因此不妨暂时利用它来查看正在执行的完整INSERT语句。)