【问题标题】:Codeigniter: Query is returning all rows in table on select/like statementCodeigniter:查询在 select/like 语句上返回表中的所有行
【发布时间】:2016-03-25 19:06:30
【问题描述】:

我正在关注创建实时搜索功能的本教程:http://www.technicalkeeda.com/codeigniter-tutorials/live-search-using-jquery-ajax-php-codeigniter-and-mysql

我在模型中的查询返回表中的所有行。这是我的查询:

$query = $this->db->select('Key, FirstName, LastName, CompanyName')
                      ->like('FirstName', $search, 'both')
                      ->or_like('LastName', $search, 'both')
                      ->or_like('CompanyName', $search, 'both')
                      ->where('Deleted', 0)
                      ->from('AMOwners')
                      ->get();
return $query->result_array();

我想输入名称或公司名称的全部/部分内容,然后对照三列检查是否有匹配项。但是当触发 jquery 函数开始轮询数据库时,它总是拉取所有行。我做错了什么?

【问题讨论】:

  • 探索你的问题 jquery 调用函数。控制器等

标签: php mysql codeigniter


【解决方案1】:

您需要编写一个包含ANDOR 语句的嵌套查询:

$query = $this->db->select('Key, FirstName, LastName, CompanyName')
                  ->where('Deleted', 0)
                  ->where("(FirstName LIKE '%$search%' OR LastName LIKE '%$search%' OR CompanyName LIKE '%$search%')")
                  ->from('AMOwners')
                  ->get();
return $query->result_array();

【讨论】:

  • 我通过直接路由到该控制器/方法并将其直接打印到页面进行了更多测试,并且查询现在正在提取正确的信息。如何检查 json 响应?
  • Jason,我建议写一个新问题 - 它与原始问题相关,但不是原始问题的一部分。标签也会不同。
  • @Vickel,我知道你之前回答过这个问题,但为什么不使用 or_like?
  • @Mary 我认为当时我们使用 CI 2.x,除了使用我的示例之外,不可能在 where 子句中对 like 和 or_like 进行分组。使用 CI 3.0,您可以使用查询分组来实现这一点:codeigniter.com/userguide3/database/…
猜你喜欢
  • 2020-11-04
  • 2014-09-01
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多