2017-04-10 91 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代碼不正確。你會同意嗎? –