【问题标题】:MySQL Syntax Error ASP.NETMySQL 语法错误 ASP.NET
【发布时间】:2023-03-06 23:33:01
【问题描述】:

美好的一天!

我正在尝试找出我遇到了什么错误。这是错误:

这是我的代码:

protected void accountGridView_RowEditing(object sender, GridViewEditEventArgs e)
{
    accountGridView.EditIndex = e.NewEditIndex;
    BindData();
}
protected void accountGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    int user_id = int.Parse(accountGridView.DataKeys[e.RowIndex].Value.ToString());
    TextBox txtUsername = (TextBox)accountGridView.Rows[e.RowIndex].FindControl("txtUsername");

    UpdateUser(user_id, txtUsername.Text);
    accountGridView.EditIndex = -1;
    BindData();
}

private void UpdateUser(int user_id, string username)
{
    GlobalVars cn = new GlobalVars();
    MySqlConnection connection = cn.connectDB();
    connection.Open();

    string query = "UPDATE user SET username = '" + username + " WHERE user_id = " + user_id + "";
    MySqlCommand com = new MySqlCommand(query, connection);

    com.ExecuteNonQuery();
    connection.Close();

}

我无法让它工作。我在这里遗漏了什么吗?

任何帮助将不胜感激。

【问题讨论】:

  • 看起来你 遗漏了一些东西——比如一个单引号。

标签: c# mysql asp.net


【解决方案1】:

错误消息表明您的查询中有语法错误,因此其他部分(连接)按预期运行良好。现在考虑查询:- 如果您调试程序并观察query,您会看到它可能看起来像:

UPDATE user SET username = 'asd WHERE user_id= usr_123

所以这里的问题是,你在asd之后错过了',需要给一对'来指定user_id(如果是字符串),所以查询可能看起来像这样:

 string query = "UPDATE user SET username = '" + username + "' WHERE user_id = '" + user_id + "'";

但我强烈建议您使用参数化查询来避免injection。参数化查询将如下所示:

string query = "UPDATE user SET username = @username  WHERE user_id = @user_id";
MySqlCommand com = new MySqlCommand(query, connection);
com.Parameters.Add("@username", MySqlDbType.VarChar).Value = username;
com.Parameters.Add("@user_id", MySqlDbType.VarChar).Value = user_id;
// execute query here

【讨论】:

    猜你喜欢
    • 2010-12-04
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多