如何从一个表中将信息从基于另一个表的主键的文本框中提取出来?

时间:2016-08-19 19:14:45

标签: c# mysql asp.net

protected void custo_search_Click(object sender, EventArgs e)
{
    conn.Open();

    if (appo_fname.Text != null || appo_lname.Text != null || appo_num.Text != null)
    {
        DataTable dt = new DataTable();

        MySqlDataReader myReader = null;

        MySqlCommand myCommand = new MySqlCommand("SELECT customers.First_name,customers.Last_name,customers.Phone_num From customers INNER JOIN appointments On customers.Phone_num=appointments.Phone_num Where customers.Phone_num='" + search_txt.Text+"' ", conn);

        myReader = myCommand.ExecuteReader();

        while (myReader.Read())
        {  
            appo_fname.Text = (myReader["customers.First_name"].ToString());
            appo_lname.Text = (myReader["customers.Last_name"].ToString());
            appo_num.Text = (myReader["customers.Phone_num"].ToString());
        }

        conn.Close();
    }
}

我正在尝试使用相同的主键连接两个表,所以当我在搜索文本框中输入一个电话号码时,它会检查另一个表中是否存在该号码,如果是,那么我将获得f.name, l.name和手机插入其他文本框以便插入客户信息而无需全部输入,但是我的代码中的某些内容无法正常工作,它会跳过"内部的代码,而#34;

1 个答案:

答案 0 :(得分:0)

更改以下声明

appo_fname.Text = (myReader["customers.First_name"].ToString());
appo_lname.Text = (myReader["customers.Last_name"].ToString());
appo_num.Text = (myReader["customers.Phone_num"].ToString());

成:

appo_fname.Text = (myReader["First_name"].ToString());
appo_lname.Text = (myReader["Last_name"].ToString());
appo_num.Text = (myReader["Phone_num"].ToString());

(删除列名前的表名) 此外,您的代码易受SQL注入攻击,因为您正在使用字符串连接创建select语句。您应该将电话号码作为参数传递给您的选择语句。

我无法看到你是如何创建conn对象的,但我确保它是通过使用'来完成的。言。