Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# insert语句无效_C#_Asp.net_Mysql_Sql_Html - Fatal编程技术网

C# 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

嘿,伙计们,我的代码没有错误,但当我尝试下面的insert语句时,似乎什么都没有发生?
不确定是我如何包装我的文本框还是我的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中的代码,所有的按钮都乱七八糟,现在尝试一下是一个按钮问题,现在一切都好了!感谢您的时间。如果值和字段为数字,则添加这些引号将导致类型不匹配错误。嗯,我认为它们是字符串…我的错误如果值和字段为数字,则添加这些引号将导致类型不匹配错误。嗯,我认为它们是字符串…我的错误