3

アカウントにログインできるようにアカウント テーブルの行数を取得しようとしていますが、MySQL パラメータが値を追加していません。

これが私のコードです:

public int MyMethod(string username, string password)
{
    int count = 0;
    string query = "SELECT * FROM accounts WHERE username = '?user' AND password = '?pass' LIMIT 1;";

    using (MySqlCommand cmd = new MySqlCommand(query, connector))
    {
        cmd.Parameters.Add(new MySqlParameter("?user", username));
        cmd.Parameters.Add(new MySqlParameter("?pass", password));

        count = int.Parse(cmd.ExecuteScalar().ToString());
    }

    return count;
}
4

4 に答える 4

4

パラメータのプレースホルダーは、単一引用符で囲まないでください。これは、パラメータではなく値になることを強制するためです。これを試してください。

public int MyMethod(string username, string password)
{
    int count = 0;
    string query = "SELECT * FROM accounts WHERE username = @user AND password = @pass LIMIT 1;";

    using (MySqlCommand cmd = new MySqlCommand(query, connector))
    {
        cmd.Parameters.Add(new MySqlParameter("@user", username));
        cmd.Parameters.Add(new MySqlParameter("@pass ", password));

        connector.Open(); // don't forget to open the connection
        count = int.Parse(cmd.ExecuteScalar().ToString());
    }

    return count;
}
于 2013-01-14T14:01:26.680 に答える
1

私はあなたがこのようなことをしたいと信じています:

SELECT COUNT(*) FROM accounts WHERE username = '?user' AND password = '?pass';

これにより、指定されたユーザー名とパスワードを持つレコードの数が取得されます。

于 2013-01-14T14:01:20.300 に答える
1

次のようなパラメーターを追加してみてください。

cmd.Parameters.AddWithValue("@user", username);
cmd.Parameters.AddWithValue("@pass", password);
于 2013-01-14T14:21:57.060 に答える
1

これを試してください: '? myVariable ' の代わりに@myVariable 、 SELECT *の代わりにSELECT COUNT(*)

public int MyMethod(string username, string password)
{
  int count = 0;
  string query = "SELECT count(*) FROM accounts WHERE username = @user AND password = @pass LIMIT 1;";

   using (MySqlCommand cmd = new MySqlCommand(query, connector))
   {
      connector.Open(); 
      cmd.Parameters.AddWithValue("@user", username);
      cmd.Parameters.AddWithValue("@pass", password);       
      count = int.Parse(cmd.ExecuteScalar().ToString());
   }

   return count;
}
于 2013-01-14T15:13:28.290 に答える