试图从表中获取memberid

时间:2011-06-14 20:42:41

标签: mysql

我正在尝试根据文本框中输入的文本从数据库中获取memberid

String sql =@" SELECT member_Id FROM members where (member_Firstname,'',member_Lastname) ="+tbMemberName.Text;

如何做到这一点?

3 个答案:

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