2016-05-10 62 views
0

我正在處理用戶顯示熱點圖像的項目。在單擊一個部分時,他會顯示一個動態生成的複選框,從數據庫中挑選值(熱點映射到顯示的值)。使用複選框文本值在數據庫中執行搜索

我面對的問題是,當值是一個單詞(例如腫脹)時,代碼工作正常並且獲取可能的疾病,但是當有詞語時(例如關節疼痛噁心伴嘔吐)即它們之間包含空格的那些(多於一個單詞作爲複選框值)代碼不起作用。

下面是代碼

protected void Button2_Click(object sender, EventArgs e) 
{ 
    if (TextBox2.Text != "") 
    { 
     connection.Open(); 
     symptons = String.Join(", ", CheckBoxList1.Items.Cast<ListItem>().Where(i => i.Selected).Select(i => i.Text).ToArray()); 
     Label1.Text = symptons; 
     string query = symptons.Replace(", ", "','"); 
     string cm = "select distinct dname from disease d inner join diseasesymptom ds on ds.did=d.did inner join symptom s on s.sid=ds.sid where s.sname in ('" + query + "')" + "and days >" + TextBox2.Text + " and days<41 order by (days) desc;"; 

     if (symptons != "") 
     { 
      MySqlCommand cmd = new MySqlCommand(cm, connection); 
      using (MySqlDataAdapter sda = new MySqlDataAdapter()) 
      { 
       cmd.Connection = connection; 
       sda.SelectCommand = cmd; 
       sda.Fill(dt); 
       GridView1.DataSource = dt; 
       GridView1.DataBind(); 
      } 
     } 
     else 
     { 
      Label1.Text = "select at least one symptom"; 
     } 
    } 
    else 
    { 
     string script = "alert(\"We can't predict without all inputs :(\");"; 
     ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true); 
    } 
} 

我認爲這是與加入和替換,我表演。

+0

與你的問題沒有關係,但我應該指出你的代碼容易受到sql注入攻擊。看到這裏:http://weblogs.asp.net/scottgu/Tip_2F00_Trick_3A00_-Guard-Against-SQL-Injection-Attacks – sovemp

+0

是的我知道這一點,我已經限制從文本輸入到只有字符。沒有特殊字符是允許的。不管怎樣,謝謝 – yoyo

回答

0

沒關係的人..我明白了。我錯過了幫助搜索的數據庫中的列值(提示:'天')。無論如何,感謝任何閱讀此內容的人。 :)

相關問題