Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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# 更改密码无效_C#_Mysql - Fatal编程技术网

C# 更改密码无效

C# 更改密码无效,c#,mysql,C#,Mysql,我有一个用户输入当前用户名和密码的网页。如果它们与数据库中的用户匹配,则密码将更改为新密码 如果没有错误且密码已更改,则会将用户重定向到初始登录页面。如果出现错误,则会显示错误消息 但是,在密码未更改的时刻,以及当假定存在错误时,即当密码未更改时,它只是将用户重定向到登录页面 我的代码: public static MySqlConnection CreateConnection() { String connectionString = "SERVER=127.0.0

我有一个用户输入当前用户名和密码的网页。如果它们与数据库中的用户匹配,则密码将更改为新密码

如果没有错误且密码已更改,则会将用户重定向到初始登录页面。如果出现错误,则会显示错误消息

但是,在密码未更改的时刻,以及当假定存在错误时,即当密码未更改时,它只是将用户重定向到登录页面

我的代码:

public static MySqlConnection CreateConnection()
    {

        String connectionString = "SERVER=127.0.0.1; DATABASE='dbnumericalmethods'; UID='root'; PASSWORD=''";
        MySqlConnection SqlConnection = new MySqlConnection(connectionString);
        return SqlConnection;
    }

    protected void btnChange_Click(object sender, EventArgs e)
    {
        MySqlConnection SqlConnection = CreateConnection();
        string OldPassword;
        string NewPassword;
        string Username;
        string ConfirmPassword;
        Username = txtUsername2.Text;  
        OldPassword = txtOldPassword.Text;
        NewPassword = txtNewPassword.Text;
        ConfirmPassword = txtConfirmPassword.Text;
        string SqlString = "update tblLogin set Identification='" + NewPassword + "' WHERE [Identification]='" + OldPassword + "' AND Username='" + Username + "'";
        SqlConnection.Open();
        MySqlCommand cmd = new MySqlCommand(SqlString, SqlConnection);
        SqlConnection.Close();

        if (OldPassword != "" && NewPassword != "" && ConfirmPassword != "") 
        {
            Response.Redirect("Login.aspx");
        }
        else
        {
            lblErrorMessage2.Text = ("Username ");
        }

    }

您甚至没有执行命令,只是打开连接,创建一个
MySqlCommand
,然后立即关闭连接:

 MySqlCommand cmd = new MySqlCommand(SqlString, SqlConnection);
 int result = cmd.ExecuteNonQuery();
 SqlConnection.Close();

顺便说一句,您应该使用以避免
SQL注入

您甚至没有执行该命令,您只是打开连接,创建一个
MySqlCommand
,然后立即关闭连接:

 MySqlCommand cmd = new MySqlCommand(SqlString, SqlConnection);
 int result = cmd.ExecuteNonQuery();
 SqlConnection.Close();


顺便说一句,您应该使用以避免
SQL注入

,作为一个旁注,您的代码对SQL注入是开放的。请参阅以获取一些建议-但简而言之,决不要将用户提供的字符串接受到sql语句中-使用参数化查询/准备语句。您不需要添加检查以确保NewPassword和ConfirmPassword匹配吗?另外,您的代码受SQL注入的影响,最好使用存储过程,而不是执行SQL命令。您应该添加cmd.ExecuteNonQuery();您可能希望在if语句中使用
string.isNullOrWhitespace(OldPassword)
etc.@Rutix当我添加时,我得到以下错误:检查与您的MySQL服务器版本对应的手册,以了解在“[Identification]附近使用的正确语法第1行的='sugg'和Username='callum''作为旁注,您的代码可以接受SQL注入。请参阅以获取一些建议-但简而言之,决不要将用户提供的字符串接受到sql语句中-使用参数化查询/准备语句。您不需要添加检查以确保NewPassword和ConfirmPassword匹配吗?另外,您的代码受SQL注入的影响,最好使用存储过程,而不是执行SQL命令。您应该添加cmd.ExecuteNonQuery();您可能希望在if语句中使用
string.isNullOrWhitespace(OldPassword)
etc.@Rutix当我添加时,我得到以下错误:检查与您的MySQL服务器版本对应的手册,以了解在“[Identification]附近使用的正确语法='sugg'和Username='callum''在第1行进行更改时,我收到以下错误消息:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第行“[Identification]=“sugg”和Username=“callum”附近使用的正确语法1@user2852418从
标识中删除方括号
,它不是保留关键字,据我所知…请看,您需要使用`来转义MYSQL中的保留关键字。请看这个问题:谢谢,它现在更改了密码,但是当输入错误的密码时,我仍然没有收到任何错误消息?@user2852418检查
结果是否大于零
ExecuteNonQuery
返回受影响的行数。使用简单的if语句?在进行更改时,我会收到以下错误消息:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第行“[Identification]=“sugg”和Username=“callum”附近使用的正确语法1@user2852418从
标识中删除方括号
,它不是保留关键字,据我所知…请看,您需要使用`来转义MYSQL中的保留关键字。请看这个问题:谢谢,它现在更改了密码,但是当输入错误的密码时,我仍然没有收到任何错误消息?@user2852418检查
结果是否大于零
ExecuteNonQuery
返回受影响的行数。是否使用简单的if语句?