如何使用MySQL和PHP存储时间戳并将其输出

如何使用MySQL和PHP存储时间戳并将其输出,php,mysql,Php,Mysql,我一直在寻找这个问题的答案,但我还没有找到一个答案来回答我的问题。说到php,我是一个傻瓜,所以请友好一点。 我正在尝试制作一个CMS,到目前为止,我所拥有的只是你可以制作帖子,但是当我尝试存储帖子的时间时,它只输出1969年12月31日。我假设我没有正确存储该值,因为如果它显示该日期,则表示计时器处于0 这是我到目前为止所拥有的 <?php require('config.php'); if (isset($_POST['name']) AND isset($_POST['mail'

我一直在寻找这个问题的答案,但我还没有找到一个答案来回答我的问题。说到php,我是一个傻瓜,所以请友好一点。 我正在尝试制作一个CMS,到目前为止,我所拥有的只是你可以制作帖子,但是当我尝试存储帖子的时间时,它只输出1969年12月31日。我假设我没有正确存储该值,因为如果它显示该日期,则表示计时器处于0

这是我到目前为止所拥有的

<?php
require('config.php'); 

if (isset($_POST['name']) AND isset($_POST['mail']) AND isset($_POST['avatar']) AND isset($_POST['title']) AND isset($_POST['message'])) 
{ 
$name = addslashes($_POST['name']); 
$mail = addslashes($_POST['mail']); 
$avatar = addslashes($_POST['avatar']); 
$title = addslashes($_POST['title']); 
$message = addslashes($_POST['message']); 
// We try to find out if we were going to modify the news ... 
if ($_POST['id_news'] == 0) 
{ 
// No modifs ?? lets put some data on the tables :p 
mysql_query("INSERT INTO news VALUES('', '" . $name . "', '" . $title . "', '" . $message . "', '" . time() . "', '" . $mail . "', '" . $avatar . "')"); 
} 
else 
{ 
// If we want to modify, let's just update all the data 
mysql_query("UPDATE news SET name='" . $name . "', title='" . $title . "', message='" . $message . "', mail='" . $mail . "', avatar='" . $avatar . "' WHERE id=" . $_POST['id_news']); 
} 
} 

/* 
Verify if ever we want to delete the news 
*/ 
if (isset($_GET['delete_news'])) 
{ 
// let's delete data Very Happy 
mysql_query('DELETE FROM news WHERE id=' . $_GET['delete_news']); 
} 
?> 

<table width="487"> 
<tr> 
<th>Modify</th> 
<th>Delete</th> 
<th>Title</th> 
<th>Date</th> 
<th>Author</th> 
</tr> 

<?php 
$res = mysql_query('SELECT * FROM news ORDER BY id DESC'); 
while ($data = mysql_fetch_array($res)) 
{ 
?> 

<tr> 
<td align="center"><?php echo '<a href="write_news.php?modify_news=' . $data['id'] . '">'; ?>Modify</a></td> 
<td align="center"><?php echo '<a href="list_news.php?delete_news=' . $data['id'] . '">'; ?>Delete</a></td> 
<td align="center"><?php echo stripslashes($data['title']); ?></td> 
<td align="center"><?php echo date('d F Y - h:i:s a', $data['time']); ?></td> 
<td align="center"><?php echo stripslashes($data['name']); ?></td> 
</tr> 

<?php 
}  
?> 

修改
删除
标题
日期
作者

提前感谢您。

您可以执行strotime函数,也可以执行分解元素的分解和mktime

时间可能更容易

日期('dfy-h:i:sa',标准时间($date['time])

正如在回复中提到的,在打印变量时,您可能希望对其进行Santize处理,并可能保护其进入(而不仅仅是addslashes)

这里是转义字符串的链接,但是您可能想考虑最好的替代方案,也就是说对插入项

进行修改。
我假设您在数据类型
日期时间
时间戳
中有字段
时间
,然后使用:

mysql_query("INSERT INTO news VALUES('', '" . $name . "', '" . $title . "', '" . $message . "', '" . date('Y-m-d H:i:s') . "', '" . $mail . "', '" . $avatar . "')"); 
或者现在就使用mysql函数

mysql_query("INSERT INTO news VALUES('', '" . $name . "', '" . $title . "', '" . $message . "', NOW(), '" . $mail . "', '" . $avatar . "')"); 
从数据库读取值时,可以将其转换为整数,然后使用
date
函数。例如:

$tableColumn = '2013-10-10 15:10:12';
echo date('Y-m-d H:i:s', strtotime($tableColumn));
请注意,
TIMESTAMP
数据类型从1970年1月1日起由UTC存储为4字节整数秒。MySQL将时间戳值从当前时区转换为UTC进行存储,并从UTC转换回当前时区进行检索

但是与数据类型
时间戳
的交互与
日期时间
的交互相同,您需要以格式
YYYY-MM-DD HH:II:SS
存储数据

您可以在mysql中使用INT数据类型来存储时间戳。对于插入,可以使用带有php函数的variant
time()

或者使用sql函数UNIX_TIMESTAMP()


要从数据库中显示此列中的值,只需使用php函数
date($formatOfDate,$databaseValue)

哦,我可以轻松地销毁您的数据库。。。清理变量。在开始这个项目之前。如果你真的是认真的,那么“noob”和“新手”是有区别的,所以不要成为“noob”。你为什么不使用当前的时间戳???表
新闻
时间
列的哪个数据类型?我可以看出你至少在尝试清理一些变量,尽管你一定要阅读弗雷德上面的链接
$\u POST['id\u news']
仍然很突出,我假设这将是上一页表单中的一个隐藏字段,因此典型用户不会与它交互?没关系,永远不要相信任何$\u POST或$\u GET变量包含您期望它包含的内容。
   $sql = "insert into test values(" . time() . ")";
   $sql = "insert into test values(UNIX_TIMESTAMP())";