我的日期-时间表示有问题。我想在一个列表中显示进入数据库的条目的时间,旁边有条目的标题。但目前,每当我试图正确格式化时间时,代码只显示一个条目,而不是所有条目。
<?php
$result = mysql_query("SELECT * FROM posts");
while ($row = mysql_fetch_array($result)){
echo "<li>{$row["date"]}". " ". $row["title"]. "</li>";
}
?>
像这样,它显然只是显示数据库中的内容:
2014-09-08 07:09:24.476246 this is it !!
2014-09-05 06:20:20.317560 So nun endlich die Website online
但当我以这种方式格式化日期时。。。
<?php
$result = mysql_query("SELECT * FROM posts");
$new_date = mysql_fetch_row($result);
$date = date_create($new_date[3]);
while ($row = mysql_fetch_array($result)){
echo "<li>". date_format($date, 'Y-m-d H:i:s'). " ". $row["title"]. "</li>";
}
?>
我只从数据库中得到最后一行。
尝试在循环中直接使用date()
进行格式化,这样就不需要$date
var
echo "<li>".date('Y-m-d H:i:s', strtotime($row["date"]))." ". $row["title"]. "</li>";
或者只制作
$date = date_create($new_date[3]);
环路内
此外,mysql_*
已被弃用,以获得更多关注@john Conde答案。
通过在循环外调用mysql_fetch_row()
,您将弹出堆栈中记录集的第一条记录,只留下第二条记录。只需在循环中创建DateTime()对象。
<?php
$result = mysql_query("SELECT * FROM posts");
while ($row = mysql_fetch_array($result)){
$date = date_create($row[3]);
echo "<li>". date_format($date, 'Y-m-d H:i:s'). " ". $row["title"]. "</li>";
}
?>
我也不建议在访问相同数据时混合使用数字键和关联键。坚持一个。我推荐关联数组,因为它们对读者来说更清楚发生了什么
<?php
$result = mysql_query("SELECT * FROM posts");
while ($row = mysql_fetch_assoc($result)){
$date = date_create($row['date_col']);
echo "<li>". date_format($date, 'Y-m-d H:i:s'). " ". $row["title"]. "</li>";
}
?>
请不要在新代码中使用mysql_*
函数。它们不再被维护,并被正式弃用。看到红盒子了吗?了解准备好的语句,并使用PDO或MySQLi-本文将帮助您决定哪一个。如果你选择PDO,这里有一个很好的教程。