C# insert语句无效
嘿,伙计们,我的代码没有错误,但当我尝试下面的insert语句时,似乎什么都没有发生?C# insert语句无效,c#,asp.net,mysql,sql,html,C#,Asp.net,Mysql,Sql,Html,嘿,伙计们,我的代码没有错误,但当我尝试下面的insert语句时,似乎什么都没有发生? 不确定是我如何包装我的文本框还是我的FriendID查询字符串 protected void Button1_Click(object sender, EventArgs e) { string friendid = Request.QueryString["FriendID"]; string theUserId = Session["UserID"].ToS
不确定是我如何包装我的文本框还是我的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);
}
}
您根据字段名称切换了变量,它应该是:
using (OdbcCommand cmd = new OdbcCommand("INSERT INTO WallPosting (UserID, Wallpostings, FriendUserID) VALUES (" + theUserId + ", '" + TextBox1.Text + "', " + friendid + ")", cn))
已添加新记录,,但用于错误的用户,因此您在重新加载帖子时未找到该记录
正如您已经被告知的,通过使用参数而不是直接将值添加到SQL字符串来处理SQL注入风险。您根据字段名称切换了变量,它应该是:
using (OdbcCommand cmd = new OdbcCommand("INSERT INTO WallPosting (UserID, Wallpostings, FriendUserID) VALUES (" + theUserId + ", '" + TextBox1.Text + "', " + friendid + ")", cn))
"INSERT INTO WallPosting (UserID, Wallpostings, FriendUserID) VALUES (" + friendid + ", '" + TextBox1.Text + "', " + theUserId + ")"
已添加新记录,,但用于错误的用户,因此您在重新加载帖子时未找到该记录
正如您已经被告知的,通过使用参数而不是直接将值添加到SQL字符串来处理SQL注入风险
"INSERT INTO WallPosting (UserID, Wallpostings, FriendUserID) VALUES (" + friendid + ", '" + TextBox1.Text + "', " + theUserId + ")"
变成
"INSERT INTO WallPosting (UserID, Wallpostings, FriendUserID) VALUES ('" + friendid + "', '" + TextBox1.Text + "', '" + theUserId + "')"
必须使用单引号限定字符串。否则,解析器将它们视为变量
变成
"INSERT INTO WallPosting (UserID, Wallpostings, FriendUserID) VALUES ('" + friendid + "', '" + TextBox1.Text + "', '" + theUserId + "')"
必须使用单引号限定字符串。否则,解析器会将它们视为变量。首先,您需要修复这个主要的SQL注入漏洞。尤其是如果您的网站使用的是
root
用户(它确实不应该使用)。目前来看,数据库没有被修改这一事实是一个非常好的运气。也许可以尝试一下…捕获,看看是否到达捕获块并检查ex.message。调试时会发生什么?调用cmd.ExecuteNonQuery()
了吗?当它出现时,命令的文本是什么?(由于您使用的是字符串连接,现在不妨利用它,并查看正在执行的完整INSERT
语句。)首先,您需要修复这个主要的SQL注入漏洞。尤其是如果您的网站使用的是root
用户(它确实不应该使用)。目前来看,数据库没有被修改这一事实是一个非常好的运气。也许可以尝试一下…捕获,看看是否到达捕获块并检查ex.message。调试时会发生什么?调用cmd.ExecuteNonQuery()
了吗?当它出现时,命令的文本是什么?(既然您使用的是字符串连接,那么不妨暂时利用它,看看执行的是完整的INSERT
语句。)嘿,我切换它们是有原因的,我在朋友页面上工作,所以当你点击自己的朋友时,我会根据我的查询字符串的urlencode来切换它们,以表示你的帖子是在谁的墙上发布的page@Garrith好的,但是要查看新插入的记录有PopulateWallPosts(friendid)代码>取而代之。除非你在使用数据库资源管理器,但没有看到任何东西被插入?我发现了我的问题,当我复制页面时,我复制并粘贴了html中的代码,所有的按钮都乱七八糟,现在尝试一下是一个按钮问题,现在一切都好了!谢谢你的时间Shadowhey shadow我切换它们是有原因的,我在朋友页面上工作,所以当你点击自己的朋友时,根据我的查询字符串的urlencode,切换它们来表示你的帖子在谁的墙上page@Garrith好的,但是要查看新插入的记录有PopulateWallPosts(friendid)代码>取而代之。除非你在使用数据库资源管理器,但没有看到任何东西被插入?我发现了我的问题,当我复制页面时,我复制并粘贴了html中的代码,所有的按钮都乱七八糟,现在尝试一下是一个按钮问题,现在一切都好了!感谢您的时间。如果值和字段为数字,则添加这些引号将导致类型不匹配错误。嗯,我认为它们是字符串…我的错误如果值和字段为数字,则添加这些引号将导致类型不匹配错误。嗯,我认为它们是字符串…我的错误