【问题标题】:Using checkbox text values to perform search in database使用复选框文本值在数据库中执行搜索
【发布时间】:2016-05-29 03:20:33
【问题描述】:

我正在开发一个项目,向用户显示带有热点的图像。单击某个部分后,会显示一个动态生成的复选框,其值是从数据库中选取的(热点映射到显示的值)。

我面临的问题是,当值是单个词(例如肿胀)时,代码可以正常工作并获取可能的疾病,但是当有诸如(例如关节疼痛 )之类的词时> 恶心呕吐),即它们之间包含空格(多于一个单词作为复选框值)代码不起作用。

这里是代码

 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);
    }
} 

我认为这与我正在执行的加入和替换有关。

【问题讨论】:

  • 与您的问题无关,但我应该指出您的代码容易受到 sql 注入攻击。见这里:weblogs.asp.net/scottgu/…
  • 是的,我知道这一点,并且我已将文本框中的输入限制为仅字符。不允许特殊字符..无论如何谢谢

标签: c# mysql asp.net checkbox


【解决方案1】:

没关系,伙计们..我明白了。我在数据库中缺少一个有助于搜索的列值(提示:它的“天”)。无论如何,感谢任何阅读本文的人。 :)

【讨论】:

    猜你喜欢
    • 2016-07-01
    • 1970-01-01
    • 2015-09-13
    • 2012-06-11
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    相关资源
    最近更新 更多