在我的网站中,我希望允许用户通过电子邮件或用户名登录。我试过跟踪,但只有当我使用电子邮件而不是用户名
时才登录if (!string.IsNullOrEmpty(username.Text) & !string.IsNullOrEmpty(password.Text)) {
string str = "select * from login where username=@username or email = @email and Password=@password";
MySqlCommand cmd = new MySqlCommand(str, con);
cmd.Parameters.AddWithValue("@username", username.Text);
cmd.Parameters.AddWithValue("@email", username.Text);
cmd.Parameters.AddWithValue("@password", password.Text);
con.Open();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
user = ds.Tables(0).Rows(0)("username");
email = ds.Tables(0).Rows(0)("email");
pswd = ds.Tables(0).Rows(0)("password");
page = ds.Tables(0).Rows(0)("link");
if (ds.Tables(0).Rows.Count > 0) {
if (user == username.Text.ToString | email == username.Text.ToString & pswd == password.Text.ToString) {
Response.Cookies("User_Type").Value = "manager";
Response.Cookies("masterLogin").Value = username.Text;
Response.Redirect(page);
} else {
Response.Write("<script language='javascript'>alert('User name or password is invalid');</script>");
}
}
}
答案 0 :(得分:1)
使用以下sql查询。
select * from login where (username=@username or email = @email) and [Password]=@password // Password is a reserved keyword you cant use this as a column name.
请详细说明你得到的错误。
答案 1 :(得分:1)
检查此答案只需尝试使用以下代码替换您的代码
if (user == username.Text.ToString || email == username.Text.ToString
&& pswd == password.Text.ToString) {
&#13;
答案 2 :(得分:0)
缺陷就在这一行:
if (user == username.Text.ToString | email == username.Text.ToString
& pswd == password.Text.ToString) {
您需要撰写|
和&
,而不是||
和&&
。
另外,您应该将||
括在括号中,因为&&
具有更高的优先级。
所以这就是解决方案:
if ((user == username.Text.ToString || email == username.Text.ToString)
&& pswd == password.Text.ToString) {
答案 3 :(得分:0)
你的WHERE中的OR将缩短你的AND。
例如,尝试下面的等同于你的逻辑:
SELECT 'a' WHERE 1 = 1 OR 2 = 1 AND 3 = 1
这将选择'a'
您所追求的可能是:
select * from login where (username=@username or email = @email) and Password=@password"
答案 4 :(得分:0)
您应该考虑在查询中对条件进行分组,方法是将其括起来,如
select *
from login
where (username=@username or email = @email)
and Password=@password";