获取逗号分隔值的结果与where条件

时间:2016-06-06 08:15:17

标签: php mysql codeigniter comma

我有两列都有逗号keyword_whomtoteach和area_tutor的值,当我将多个值传递给$ area和$ keyword_whomtoteach我没有得到正确的输出我正在使用此查询

     $toteach=1,5      $area=1,5
     $search  = "keyword_whomtoteach IN (".$toteach.")";
     $where = "area_tutor IN (".$area.")";

     $this->db->where($search);
     $this->db->or_where($where);
     $query=$this->db->get();
     return $result = $query->result_array();

这里我得到了正确的结果,但问题是我需要这样的东西 如果

id   keyword_whomtoteach             area_tutor
  1  1,2,3,4,5                         1,2
  2  2,3,5                             2,3
  3  5,6,7                             1,4
  4  1,5,6                             5,6

我想要的东西就像我传递$ toteach = 1和$ area = 1,5在这个时间点我应该得到id 1和4,因为它们都有keyword_whometoteach = 1,5

1 个答案:

答案 0 :(得分:0)

您应该将FIND_IN_SET(1, column_name) AND FIND_IN_SET(5, column_name)语法替换为FIND_IN_SET(1, column_name) OR FIND_IN_SET(5, column_name)$toteach=1,5 $area=1,5(取决于所需的结果)。

但是,您的架构不是存储此数据的好方法。标准做法是创建第二个表并在此表中存储以逗号分隔的列表。请阅读Is storing a delimited list in a database column really that bad?,了解有关如何以及为何采用的更多信息。

您还有PHP语法错误($toteach='1,5'; $area='1,5';应为$toteach),并且您的MySQL查询需要$area[ { 'repeat(5, 10)': { _id: '{{objectId()}}', date: '{{date()}}', date_only: '{{date()}}', //how can I show here date only time_only: '{{date()}}', //how can I show here time only user: { first: '{{firstName()}}', last: '{{surname()}}' }, phone: '+1 {{phone()}}' } } ] 周围的引号。