2016-08-19 28 views
-2
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(); 
    } 
} 

我想用相同的主鍵連接2個表,所以當我在搜索文本框中輸入電話號碼時,它會檢查數字是否存在於另一個表中,如果是這樣,我會得到f。名稱,l.name和電話放入其他文本框中,以便插入客戶信息而無需鍵入全部內容,但某些內容在我的代碼中不起作用,它會跳過「while」中的代碼。如何根據另一個表中的主鍵將信息從一個表中拉入文本框?

+1

我的電話號碼是「 」 '; DROP DATABASE DB_NAME()'「' –

+0

更改while語句成 做{如果(myReader.HasRows) { appo_fname.Text =(myReader [ 」customers.First_name「]的ToString()); appo_lname.Text =(myReader [「customers.Last_name」]。ToString()); appo_num.Text =(myReader [「customers.Phone_num」]。ToString()); } } while(myReader.NextResult()); – Kami

+0

是否有任何異常或只是沒有數據返回的查詢,我認爲這裏的代碼是好的,你只需要關心SQL注入。您可以在sq management studio中運行查詢,並檢查查詢是否可以返回某些內容。 –

回答

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對象的,但我會確保它是通過'using'語句完成的。

相關問題