【问题标题】:mysql search for more than one fieldmysql搜索多个字段
【发布时间】:2015-01-19 10:31:30
【问题描述】:

大家好,对于以下问题,我没有发现任何关于堆栈溢出的有用信息。

我想为一位客户搜索多个字段。 我有一些文本框可以输入我的搜索条件。

客户表: 姓名 姓 工作 a b c a a c 啊啊啊

例如,当我搜索 name = a、surname = b、job = c 时,我想看到我的第一个客户,如果我搜索 name = a,我想看到每个客户(重点是,如果 surname和工作是空的,我无法从查询中取回名称)

我想在我的存储过程中搜索客户,它必须填充一个网格视图。

我的搜索按钮的 C# 代码:

protected void btnRicerca_Click(object sender, EventArgs e)
{
    GridView1.Visible = true;


    ClienteInfo CI = new ClienteInfo();
    DboUser objdbo = new DboUser();
    int id_cliente = 0;

    txtNomeCliente.Text = CI.nome_cliente;
    txtCognomeCliente.Text = CI.cognome_cliente;
    txtRagioneSociale.Text = CI.ragione_sociale;
    txtVia.Text = CI.via;
    txtCitta.Text = CI.citta;
    txtProvincia.Text = CI.provincia;
    txtCap.Text = CI.cap;
    txtNazione.Text = CI.nazione;
    txtTelefono.Text = CI.recapito_telefonico;
    txtPartitaIva.Text = CI.partita_iva;
    txtCodiceFiscale.Text = CI.codice_fiscale;
    txtEmail.Text = CI.email;
    txtPubblicaAmministrazione.Text = CI.codice_pubblica_amministrazione;
    CI.id_utente = Convert.ToInt64(Session["Id_Utente"]);

    id_cliente = objdbo.getClienteInfo(CI);
    }

【问题讨论】:

    标签: c# mysql search select


    【解决方案1】:

    看来您必须根据 UI 输入值创建 SQL 查询。 例如,如果有人输入姓名和姓氏的值,那么您的 SQL 查询应该是这样的

    SELECT * FROM customers WHERE name = "a" and surname = "b"; 
    

    如果有人只输入名称,您的 SQL 查询应如下所示。

    SELECT * FROM customers WHERE name = "a";
    

    理想情况下,您应该从您的应用程序中管理 SQL 查询。我遇到了类似的经历,我使用解释器模式来生成 SQL 查询。

    此外,使用 like 搜索名称总是更好。

    例如:SELECT * FROM customers WHERE name like "%a%"

    【讨论】:

    • 在您的应用程序中构建动态SQL时,请确保使用绑定参数来防止SQL注入。
    • 注意,使用带 LIKE 的前导通配符(即 "%a%" )将阻止使用索引来检查该字段
    猜你喜欢
    • 2015-06-17
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2021-08-05
    相关资源
    最近更新 更多