繁体   English   中英

在MySQL插入语句中使用变量

[英]Using variables with Mysql insert statement

我正在尝试将一些数据插入MySql数据库并成功建立连接并提交数据,但是我的变量保存为变量的实际名称,而不是我尝试分配的值。 我正在使用身份收集我的asp系统的登录用户,并从我的主页上的某些单选按钮列表中收集用户的分数。

我尝试为ID为12345的用户和ID为4的用户保存具有ID的分数,它将保存单词Id和单词分数而不是数字。

这是我当前的代码:

    if (score != 0) ;
    {
        string Id = User.Identity.GetUserId();
        string MyConString = "SERVER=localhost;" +
        "DATABASE=synther_physics;" +
        "UID=root;" +
        "PASSWORD=rootpass;";
        MySqlConnection connection = new MySqlConnection(MyConString);
        MySqlCommand command = connection.CreateCommand();
        MySqlDataReader Reader;
        command.CommandText = "INSERT INTO userscores (Id, momentsandenergytestscore) VALUES ('Id','score');";

        connection.Open();
        Reader = command.ExecuteReader();
        connection.Close();


    }

第一件事是将变量直接放在语句中是不可以的,这会导致一个非常著名的问题,称为SQL Injection 为避免这种情况,我们将更改您的命令以使用parameters ,稍后将在其中填充变量

command.CommandText = "INSERT INTO userscores (Id, momentsandenergytestscore) VALUES (@Id,@score);";

然后,我们将在这两行中添加以您的变量填充参数

command.Parameters.AddWithValue("@Id", Id);
command.Parameters.AddWithValue("@score", score);

由于这不是SELECT语句,因此不需要阅读器。 您可以使用ExecuteNonQuery命令,该命令将返回受影响的行数(此INSERT语句应为1)。

int RowsAffected = command.ExecuteNonQuery();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM