Comment demander à MySQL d'inspecter et de valider les résultats statiques d'une autre colonne
P粉111627787
P粉111627787 2024-01-16 21:09:31
0
2
359

Voici le code que j'utilise actuellement :

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");
        }
    }

Le code ci-dessus peut se connecter à ma base de données. Le problème est qu'il vérifie uniquement l'identifiant et le mot de passe. Puisque ces deux fonctionnent, je ne sais pas comment appeler une autre colonne mgroup_others et vérifier s'il y a un résultat de 7 là-bas. J'ai joint une photo de ma base de données ici :

Voici la fonction que j'ai réécrite :

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

répondre à tous(2)
P粉459440991

La clause

SELECT devrait ressembler à ceci :

SELECT members_pass_hash, mgroup_others

Ensuite, puisque vous obtenez plusieurs valeurs, vous devez utiliser ExecuteReader() 或使用 DataAdapterFill() DataTable afin de pouvoir utiliser toutes les valeurs. Si vous voulez devenir un développeur performant, vous devez écrire ce code vous-même afin de le comprendre, plutôt que de simplement copier le code que nous vous fournissons.

P粉533898694

Si tout ce que vous devez savoir est mgroup_others 列中的值是否等于 7, vous pouvez mettre à jour le SQL comme suit :

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();

L'avantage de cette approche (par rapport à certaines autres réponses) est que vous pouvez toujours utiliser ExecuteScalar puisque vous ne lisez qu'une seule valeur.

Si vous avez besoin de récupérer mgroup_others 的值并在 C# 代码中检查它,您应该使用显示如何使用 ExecuteReader数据适配器.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!