如何使用MySQL和PHP存储时间戳并将其输出
我一直在寻找这个问题的答案,但我还没有找到一个答案来回答我的问题。说到php,我是一个傻瓜,所以请友好一点。 我正在尝试制作一个CMS,到目前为止,我所拥有的只是你可以制作帖子,但是当我尝试存储帖子的时间时,它只输出1969年12月31日。我假设我没有正确存储该值,因为如果它显示该日期,则表示计时器处于0 这是我到目前为止所拥有的如何使用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
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函数的varianttime()
或者使用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())";