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

时间:2013-11-15 16:14:33

标签: php mysql

我一直在寻找是否有任何答案,我还没有找到一个回答我的问题。说到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 
}  
?> 

提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以执行strtotime功能或进行爆炸并对爆炸元素执行mktime。

strtotime可能更容易

日期('d F Y - h:i:s a',strtotime($ date ['time]));

正如在回复中所提到的,你会希望在打印出来时将变量设置为Santize,并且可以保护变量(不仅仅是一个addlashes)

http://www.php.net/manual/en/function.strtotime.php

http://www.php.net/manual/en/function.date.php

这是转义字符串的链接,但您可能想要考虑最佳替代方案,那就是参数化

http://www.php.net/manual/en/mysqli.real-escape-string.php

答案 1 :(得分:0)

我认为您在数据类型timedatetime中有字段timestamp,然后使用:

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将TIMESTAMP值从当前时区转换为UTC进行存储,然后从UTC转换回当前时区进行检索。

但与数据类型TIMESTAMP的交互与DATETIME相同,您需要以格式YYYY-MM-DD HH:II:SS存储数据。

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

的变体
   $sql = "insert into test values(" . time() . ")";

或使用sql函数UNIX_TIMESTAMP()。

   $sql = "insert into test values(UNIX_TIMESTAMP())";

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