MySQL使用CodeIgniter查询问题

时间:2013-08-26 17:03:49

标签: php mysql codeigniter date web

所以我找到了earlier problem的根本原因。

原来这是问题的查询。好吧,不是在我身边,至少不是我这么认为。这个问题一直困扰着我好几个小时。不幸的是,这件事我不知道如何解决。

请检查此代码:

public function get_calendar_content($y,$m){

   $query = $this->db->query("SELECT * from events WHERE event_date LIKE '$y-$m%'");
   $content=array();
   foreach($query->result() as $q){
       $content[substr($q->event_date,8,2)]=$q->event_details;
   }
   return $content;

}

此函数忽略了我为$m或月份提供的任何内容。它只关心这一年。另外,当我尝试从events table中选择所有数据而不是where子句时,它仍然只返回events表中的条目或数据,该表在日期为八月。

当我尝试将where子句明确写入event_date LIKE '2013-09%'时,它根本不会返回任何数据。我不明白发生了什么。由于某些未知原因,该函数只会从8月返回数据。我已经尝试在phpMyAdmin上编写查询,它可以正常工作。它只会在我的应用程序中产生不规则性。我的问题可能是什么?

编辑:我现在正在使用多维数组。它修复了有关多个事件的混淆,但仍未返回其他月份的数据。

public function get_calendar_content($y,$m){
$query = $this->db->query("SELECT * from events WHERE event_date LIKE '$y-$m%'");
           $content=array();

       foreach($query->result() as $q){
           $content[substr($q->event_date,8,2)][]=$q->event_details;
       }
       return $content;
}

1 个答案:

答案 0 :(得分:2)

问题在于如何构建返回数组:

substr($q->event_date,8,2)将获得每个事件的日期(1-31)并且您将其用作您的密钥,但是数组不能具有重复键,因此仅保留最后一个值。

解决方案是更改数组的键值,使它们不重复