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

PHP查询MySQL只返回一个日期的多行,php,Php,在PHP和MySQL中处理日期时,我总是感到困惑。我查看了其他帖子,但没有找到解决方案 我有一个简单的博客,存储在数据库中,当被查询时,它会回显记录。我得到了多个包含多个条目的行,但是所有行的日期都是相同的 日期以MySQL时间戳存储在名为“timestamp”的列中,并在数据库中以这种方式格式化: 2011-12-29 21:16:55(例如) 问题是: $set_select_sql = "SELECT * FROM `table` ORDER BY `table`.

在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++
$set\u select\u sql=“选择*
从'table'开始
按“表”排序。`TimeStamp`DESC
限制为0,30”;
$set\u query=mysql\u query($set\u select\u sql);
$HowMany=mysql\u num\u行($set\u query);
$time=date(“g:ia”,strottime(mysql\u result($set\u query,0,'TimeStamp'));
$date=date(“fj,Y”,strotime(mysql\u result($set\u query,0,'TimeStamp'));
$blogpost=mysql_结果($set_查询,0,'blogpost');
mysql\u data\u seek($set\u query,0);
$r=0;

而($r您仅获取此行中找到的第一行的日期:

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

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

这是因为您输出了
$time
$date
,它们不是在行的循环中获取的,而是在它之前

解决方案是在循环中获取以下变量:

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;
}
while($row=mysql\u fetch\u assoc($set\u query)){
$time=date(“g:ia”,strottime($row['TimeStamp']);
$date=date(“fj,Y”,strottime($row['TimeStamp']));
$post=$row['blogpost'];
echo“我在“$date.”上发布此消息的时间是“$time.”;
echo$post;
}

您正在将时间和日期变量设置为第一行的值。然后您在循环记录,但不更新循环中的时间和日期变量。您可以将
if($row==FALSE){}
替换为
if($row!==FALSE)
所以你不必把你的逻辑放在
的其他地方
谢谢你的帮助。我知道这很简单。