我正在尝试根据文本框中输入的文本从数据库中获取memberid
String sql =@" SELECT member_Id FROM members where (member_Firstname,'',member_Lastname) ="+tbMemberName.Text;
如何做到这一点?
答案 0 :(得分:0)
试试这个:
String sql =@" SELECT member_Id FROM members where CONCAT(member_Firstname,'',member_Lastname) = '"+tbMemberName.Text+"'";
此外,这很容易受到sql注入。
答案 1 :(得分:0)
出于安全性和性能原因,我个人会在编译查询前的第一个/最后一个中拆分成员的名字。现在,我不熟悉你用来调用这个查询的语言,但是我会制定一些希望有意义的东西,不管它是不是愚蠢:
String sql =@" SELECT member_Id FROM members WHERE member_Lastname = "+safely_escaped(tbMembername.Last.Text)+" AND member_Firstname = "+safely_escaped(tbMembername.First.Text)+"
这将允许在将名称插入查询之前对名称进行更精确的分析,并且它允许您使用索引(这对于之前显示的任何示例都是不可能的)。为了清楚起见,在这种情况下,索引最有效的是INDEX(member_Lastname,member_Firstname)。
答案 2 :(得分:0)
如果您正在编写C#,正如您所评论的那样,您将需要开始使用参数来避免SQL注入。
string getMember= @"SELECT member_Id FROM members
WHERE member_Firstname like @userText
OR member_Lastname like @userText;";
MySqlCommand m = new MySqlCommand(getMember);
m.Parameters.AddWithValue("@userText", tbMemberName.Text + "%");
var reader = m.ExecuteReader();