C# 使用OR运算符选择MySQL

C# 使用OR运算符选择MySQL,c#,mysql,mysqlcommand,C#,Mysql,Mysqlcommand,在C桌面应用程序中,我使用MySqlConnection MySqlCommand cmd.CommandText: to选择记录,但我正试图弄清楚,如果我想从字符串UserOrEmail=textBox1.Text.Trim;这样的单个输入中同时检查用户或电子邮件,如何使用OR运算符和条件 看起来条件对username=或email=有效,但在这种情况下,以下值检查不起作用,似乎我必须在这里使用一些正确的方法: "select * from reg where username='&

在C桌面应用程序中,我使用MySqlConnection MySqlCommand cmd.CommandText:

to选择记录,但我正试图弄清楚,如果我想从字符串UserOrEmail=textBox1.Text.Trim;这样的单个输入中同时检查用户或电子邮件,如何使用OR运算符和条件

看起来条件对username=或email=有效,但在这种情况下,以下值检查不起作用,似乎我必须在这里使用一些正确的方法:

"select * from reg where username='" + UserOrEmail + "' or email='" + UserOrEmail + "' and password='" + pass + "' and key='" + key + "'";

您需要括号,因为运算符和的优先级高于或:

或在以下情况下使用运算符:

首先:使用参数化查询——否则您将面临SQL注入攻击,并且在将来容易出现大量语法错误。第二:永远不要将密码存储为纯文本-将其散列。不:我仍然在学习,这不是一个有效的借口——从一开始就正确地学习
"select * from reg where username='" + UserOrEmail + "' or email='" + UserOrEmail + "' and password='" + pass + "' and key='" + key + "'";
"select * from reg where (username='" + UserOrEmail + "' or email='" + UserOrEmail + "') and password='" + pass + "' and key='" + key + "'";
"select * from reg where '" + UserOrEmail + "' in (username, email) and password='" + pass + "' and key='" + key + "'";