PHP查询MySQL返回只有一个日期的多行

时间:2011-12-30 14:47:45

标签: php

在使用PHP和MySQL中的日期时,我总是感到困惑。我查看了其他帖子,但无法找到解决方案,

我有一个简单的博客存储在数据库中,当查询时回显记录。我得到多行有多个条目,但所有日期都相同。

日期与MySQL时间戳存储在名为' TimeStamp'的列中。并在数据库中以这种方式格式化: 2011-12-29 21:16:55(例如)。

以下是查询:

$set_select_sql = "SELECT * 
    FROM  `table` 
    ORDER BY  `table`.`TimeStamp` DESC 
    LIMIT 0 , 30";
$set_query = mysql_query($set_select_sql);
$HowMany=mysql_num_rows($set_query);
$time = date("g:i a", strtotime(mysql_result($set_query,0,'TimeStamp')));
$date = date("F j, Y ", strtotime(mysql_result($set_query,0,'TimeStamp')));
$blogpost = mysql_result($set_query,0,'blogpost');

mysql_data_seek($set_query, 0);
$r = 0;
while ($r <= $HowMany) {
    $row = mysql_fetch_assoc($set_query);
    if ($row == FALSE) {
    } else {
        extract($row);

        echo "It was $time on $date when I posted this.<br/>";
        echo "$blogpost"
    }
    $r++

为什么我只有一个约会? 我错过了什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

这是因为您输出的$time$date在行的循环中提取了 NOT ,但就在它之前。

解决方案是在循环中获取这些变量:

while ($row = mysql_fetch_assoc($set_query)) {
   $time = date("g:i a", strtotime($row['TimeStamp']));
   $date = date("F j, Y ", strtotime($row['TimeStamp']));
   $post = $row['blogpost'];

   echo "It was " . $time . " on " . $date . " that I posted this. <br />";
   echo $post;
}

答案 1 :(得分:0)

您只能获得此行找到的第一行的日期:

$date = date("F j, Y ", strtotime(mysql_result($set_query,0,'TimeStamp')));

要获取每一行的日期,您需要在while循环中获取日期,而不是之前。