Bagaimana untuk meminta MySQL memeriksa dan mengesahkan keputusan statik lajur lain
P粉111627787
P粉111627787 2024-01-16 21:09:31
0
2
363

Ini ialah kod yang sedang saya jalankan:

private void button1_Click(object sender, EventArgs e)
    {
        string server = "207.244.70.217";
        string database = "nextgene_NGH";
        string uid = "EXAMPLEUID";
        string password = "EXAMPLEPASSWORD";
        string ssl = "None";

        string connectionString = $"SERVER={server};DATABASE={database};UID={uid};PASSWORD={password};SSL Mode={ssl};";    
        using var connection = new MySqlConnection(connectionString);
        connection.Open();
        using var command = new MySqlCommand("SELECT members_pass_hash FROM core_members && WHERE name = @name;", connection);
        command.Parameters.AddWithValue("@name", maskedTextBox1.Text);
        var hashedPassword = (string) command.ExecuteScalar();
        if (!(hashedPassword is null && !BCrypt.Net.BCrypt.Verify(maskedTextBox2.Text, hashedPassword)))
        {
            
            MessageBox.Show("Login Successful");
        }
    }

Kod di atas boleh log masuk ke pangkalan data saya. Masalahnya ialah ia hanya menyemak log masuk dan kata laluan. Sejak dua kerja ini, saya tidak tahu bagaimana untuk memanggil ruangan lain mgroup_others dan semak jika ada keputusan 7 di sana. Saya telah melampirkan foto pangkalan data saya di sini:

Ini adalah fungsi yang saya tulis semula:

private void button1_Click(object sender, EventArgs e)
    {
        string server = "207.244.70.217";
        string database = "nextgene_NGH";
        string uid = "EXAMPLEUID";
        string password = "EXAMPLEPASSWORD";
        string ssl = "None";
        string vipcheck = "7";

        string connectionString = $"SERVER={server};DATABASE={database};UID={uid};PASSWORD={password};SSL Mode={ssl};";    
        using var connection = new MySqlConnection(connectionString);
        connection.Open();
        using var command = new MySqlCommand("SELECT members_pass_hash AND mgroup_others FROM core_members && WHERE name = @name;", connection);
        command.Parameters.AddWithValue("@name", maskedTextBox1.Text);
        var hashedPassword = (string) command.ExecuteScalar();
        if (!(hashedPassword is null && !BCrypt.Net.BCrypt.Verify(maskedTextBox2.Text && vipcheck != mgroup_others, hashedPassword)))
        {
            
            MessageBox.Show("Login Successful");
        }
    }

P粉111627787
P粉111627787

membalas semua(2)
P粉459440991

Klausa

SELECT sepatutnya kelihatan seperti ini:

SELECT members_pass_hash, mgroup_others

Maka kerana anda mendapat berbilang nilai, anda harus menggunakan ExecuteReader() 或使用 DataAdapterFill() DataTable supaya anda boleh menggunakan semua nilai. Jika anda ingin menjadi pembangun yang berjaya, anda harus menulis kod ini sendiri supaya anda memahaminya, dan bukannya hanya menyalin kod yang kami berikan kepada anda.

P粉533898694

Jika anda hanya perlu tahu mgroup_others 列中的值是否等于 7, anda boleh mengemas kini SQL seperti berikut:

using var command = new MySqlCommand("""
    SELECT members_pass_hash
    FROM core_members
    WHERE name = @name AND mgroup_others = 7;
    """, connection);
command.Parameters.AddWithValue("@name", maskedTextBox1.Text);
var hashedPassword = (string) command.ExecuteScalar();

Kelebihan pendekatan ini (berbanding dengan beberapa jawapan lain) ialah anda masih boleh menggunakan ExecuteScalar kerana anda hanya membaca satu nilai.

Jika anda perlu mendapatkan semula mgroup_others 的值并在 C# 代码中检查它,您应该使用显示如何使用 ExecuteReader数据适配器.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!