【问题标题】:Codeigniter + MySQL - Search containing stringCodeigniter + MySQL - 搜索包含字符串
【发布时间】:2019-07-08 20:46:52
【问题描述】:

我在数据库表中有列值:PL TOFLEX NEGRO/PRETO

我在我的网站上搜索:TOFLEX PRETO

我需要输出:PL TOFLEX NEGRO/PRETO

有人可以给我正确的查询吗? 我试试:

public function searchMaterial($nome)
{
    $json = [];

    $this->load->database();

    if(!empty($this->input->get("q"))){
        $this->db->like('nomeMaterial', $nome, 'both');
        $query = $this->db->select('idMaterial as id,nomeMaterial as text')
                    ->limit(50)
                    ->get("material");
        $json = $query->result();

    }
    echo json_encode($json);
}

但不起作用。

【问题讨论】:

  • 当你像TOFLEX PRETO一样搜索时,它会被认为是一个完整的搜索词。所以 sql 查询不会在输出中显示TOFLEX NEGRO/PRETO。尝试使用TOFLEXNEGROPRETO 进行搜索

标签: mysql codeigniter search


【解决方案1】:

您必须在查询数据库之前拆分您的术语。 我假设nomeMaterial 是您的专栏名称。

如果您希望您的列包含两个术语,请尝试此操作:

$search = 'TOFLEX PRETO';
$terms = explode(' ',$search); //will return an array with two strings
foreach($terms as $term){
    $this->db->like('nomeMaterial', $term);
}

如果您希望您的列中至少包含一个术语,请尝试此操作:

$search = 'TOFLEX PRETO';
$terms = explode(' ',$search); //will return an array with two strings
foreach($terms as $term){
    $this->db->or_like('nomeMaterial', $term);
}

【讨论】:

    猜你喜欢
    • 2011-05-25
    • 2021-06-12
    • 2019-05-17
    • 2013-06-26
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多