我在我的电脑上发现了一个旧的博客脚本(很老)。即时通讯从我的数据库中获取日期和时间以在PHP中显示时遇到麻烦。有人可以帮助我吗 这是我的MySQL数据库设置。
CREATE TABLE blog_posts (
id int(11) NOT NULL auto_increment,
title varchar(30) NOT NULL default '',
news text NOT NULL,
poster varchar(15) NOT NULL default '',
date timestamp(14) NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
这就是我用来发帖子的内容:
<?php
include "db.php";
$title=$_POST['title'];
$news=$_POST['news'];
$poster=$_POST['poster'];
$query="INSERT INTO $blogposts (title, news, poster) VALUES ('$title', '$news', '$poster')";
$result=mysql_query($query) or die (mysql_error());
mysql_close();
header("Location: post.php");
?>
最后这就是我用来在前端调用日期的东西:
<?php echo "posted on: - ".$day.".".$month.".".$year." at ".$hour.":".$min; ?>
我不是专家(显然),但是对日期的要求对我来说并不合适。任何人都有任何想法,我怎么能让它工作,甚至使它更好?
EDIT ::
<?php
include "db.php";
//query
$query="SELECT * FROM ".$blogposts." ORDER BY id DESC LIMIT 0,$limit ";
$result=mysql_query($query) or die (mysql_error());
//loop
while($row=mysql_fetch_array($result))
{
$querycomment = "SELECT ID FROM ".$newscomments." WHERE newsid=".$row['id'];
$resultcomment=mysql_query($querycomment) or die (mysql_error());
$num_rows = mysql_num_rows($resultcomment);
ereg("^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})",$row['date'],$res);
$year=$res[1];
$month=$res[2];
$day=$res[3];
$hour=$res[4];
$min=$res[5];
$sec=$res[6];
?>
由于
答案 0 :(得分:2)
您似乎没有在insert命令的日期字段中添加任何值。您可以使用now()
添加当前时间戳以在插入期间添加当前时间。要提取时间,您可以(a)从表中读取日期字段并使用PHP格式化时间或(b)使用mysql date and time functions
您还需要一些代码来读取PHP中的值以读取字段的值。这似乎在你的问题中缺失。
答案 1 :(得分:2)
由于日期列具有TIMESTAMP数据类型且未获得空约束,因此如果插入时没有在日期列上发布数据,则它将具有默认的current_timestamp值。 see mysql timestamp ref manual
因此,为了达到您要求的结果,您可以尝试使用以下代码获取该数据:
$sql = "select id, title, news, poster, DATE_FORMAT(date,'%d.%m.%Y at %k:%i') as posteddate from blog_posts";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
echo $row["title"]."<br/>";
echo "By : " . $row["poster"]."<br/>";
echo "posted on: - " . $row["posteddate"]."<br/>"; //"posted on: - 03.03.2011 at 7:35"
}
答案 2 :(得分:0)
当然,您还没有定义任何您尝试使用的日期变量吗?