我一直在寻找是否有任何答案,我还没有找到一个回答我的问题。说到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
}
?>
提前谢谢。
答案 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
这是转义字符串的链接,但您可能想要考虑最佳替代方案,那就是参数化
答案 1 :(得分:0)
我认为您在数据类型time
或datetime
中有字段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)