簡體   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