2016-05-10 4 views
0

私は、ユーザーにホットスポットを含む画像が表示されるプロジェクトに取り組んでいます。 1つの部分をクリックすると、動的に生成されるチェックボックスが表示され、データベースから値が選択されます(ホットスポットは表示された値にマップされます)。チェックボックスのテキスト値を使用してデータベース内で検索を実行する

私が直面しています問題は、値が単一の単語(例:腫れ)であるときということであるコードが正常に動作し、可能な疾患を取得しますが、嘔吐を伴う(例:関節痛または吐き気のような言葉があります)つまり、それらの間にスペースを含むもの(チェックボックスの値として複数の単語)コードは動作しません。ここで

は、私はそれが参加し、私が行っておりますことを交換してくださいとは何かを持っていると思うのコード

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

私はそれを持っています。私は検索に役立つデータベースの列の値が不足していた(ヒント:その '日')。とにかくこれを読んだ人に感謝します。 :)

関連する問題