我正在尝试将一些数据插入我的MySql数据库并成功建立连接并提交数据,但是我的变量保存为变量的实际名称而不是我尝试分配的值。 我正在使用身份收集我的asp系统的登录用户,并从我主页上的某些单选按钮列表中收集用户的分数。
我尝试使用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();
}
的用户的ID保存得分,例如得分为4.它将保存单词ID和单词得分而不是数字。
这是我目前的代码:
{{1}}
答案 0 :(得分:1)
首先,将变量直接放在语句中是一个禁忌,导致一个非常着名的问题叫做 SQL Injection 。 为避免这种情况,我们将更改您的命令以使用参数,稍后将使用变量填充
library(dplyr);library(stringr)
df1 <- data.frame(infecting_agent=c('staphylococcus','bacteria','virus','bacterial'))
df1 %>%
mutate(bacteria=ifelse(str_detect(infecting_agent, 'bact|cocc|staph'),1,0),
virus=ifelse(str_detect(infecting_agent, 'vir|cocc'),1,0)
)
infecting_agent bacteria virus
1 staphylococcus 1 1
2 bacteria 1 0
3 virus 0 1
4 bacterial 1 0
然后我们将添加这两行以使用您的变量填充参数
command.CommandText = "INSERT INTO userscores (Id, momentsandenergytestscore) VALUES (@Id,@score);";
由于这不是SELECT语句,因此不需要读者。您可以使用ExecuteNonQuery命令返回受影响的行数(对于此INSERT语句,该值应为1。
command.Parameters.AddWithValue("@Id", Id);
command.Parameters.AddWithValue("@score", score);