2017-04-10 515 views
0

我试图插入一些数据我的MySQL数据库,并已成功的连接并提交的数据,但我的变量保存为变量的实际名称,而不是我想要的价值分配。 我收集登录使用的身份我的ASP系统的用户,并为我的主页上收集的得分从一些单选按钮列表中的用户。与MySQL INSERT语句中使用变量

我试着用一个ID为12345的用户的ID保存得分,例如分数为4,它将保存单词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(); 


    } 
+0

你永远不通过你的值到insert语句 – trailmax

+0

请问如何将数据转化为我的表呢? –

回答

1

第一件事就是直接在声明中放置变量是一个禁忌,导致所谓的SQL注入很好的问题。 为了避免这种情况,我们要改变你的命令来使用参数,将与变量填充后

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

然后,我们将在这两条线加一个您的变量来填充参数

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

由于这不是一个SELECT语句,不需要读者。您可以使用ExecuteNonQuery命令,它会返回受影响的行数(应为1这个INSERT语句。

int RowsAffected = command.ExecuteNonQuery(); 
+0

您好,三江源的性反应,我已将你的建议,但我得到的错误的修改:“ID不能为空” –

+0

尝试标识应该被定义后一个断点,看看有什么User.Identitu有值.. ..或之前定义如果(...)和ID检查和评分。 –

+0

id为null这里,我想收集登录的用户ID代码不正确。你会同意吗? –