PDO:获取值的唯一类似部分的列表

时间:2014-11-24 17:48:42

标签: php sql pdo

我从包含2个字段的表中使用PDO获取数据: comment date

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
 extract($row);
 echo $comment;
 echo $date;
}

显示所有评论的列表。

现在我试图按月对这些评论进行分组,主要目标是创建一个带有GET值的过滤器菜单,以便只显示当前月份的评论:

<ul>
<li><a href="comments.php?month=1014">October 2014</a></li>
<li><a href="comments.php?month=1114">November 2014</a></li>
<li><a href="comments.php">December 2014</a></li>
</ul>

我认为我应该使用LIKE运算符来显示结果,但菜单链接生成怎么样?

主要问题:$ date采用d / m / Y格式,因此我必须在使用之前进行处理:

$created = $date;
$month = $created->format('mY');

此外,我事先并不能确切地知道哪些月份会在表格中注册,因此必须是&#34;动态&#34;。

那么如何获得表格中出现的每个月的列表?当然没有冗余。喜欢

1014
1114
1214

即使10月份创建了大量评论,例如。

1 个答案:

答案 0 :(得分:1)

您可以使用MySQL的STR_TO_DATE和DATE_FORMAT函数以您需要的格式返回日期。例如:

SELECT `comment`, DATE_FORMAT(STR_TO_DATE(`date`, "%d/%m/%Y"), "%m%y") as `date2` FROM `data`

如果您需要查询所有唯一的月/年组合,请使用DISTINCT:

SELECT DISTINCT DATE_FORMAT(STR_TO_DATE(`date`, "%d/%m/%Y"), "%m%y") as `date2` FROM `data`

这是显示不同选择的SQL fiddle