使用CodeIgniter查询MySQL问题


MySQL Querying Issue using CodeIgniter

所以我能够找到早期问题的根本原因。

事实证明,问题出在查询上。好吧,不在我这边,至少我不这么认为。这个问题已经困扰我好几个小时了。不幸的是,这是我不知道如何解决的问题。

请检查此代码:

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子句时,它仍然只返回日期为8月份的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;
}

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

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

解决方案是更改数组的键值,这样它们就不会重复