我正在写一个网站,我遇到了使用PHP将日期和时间保存到MySQL数据库的问题,但我得到的所有日期都是00:00:00。我不确定我的代码有什么问题,所以我希望你们能帮助我指出它。
下面是我为了方便而存储在外部php文件中的INSERT函数
<?php
class FITQuery {
public static function insert($table, $fields, $values, $condition = null) {
$query = "INSERT INTO ".$table;
$query .= '(';
for ($i = 0; $i < count($fields) - 1; $i++) {
$query .= $fields[$i].',';
}
$query .= $fields[count($fields) - 1];
$query .= ') VALUES (';
for ($i = 0; $i < count($values) - 1; $i++) {
$query .= "'".$values[$i]."',";
}
$query .= "'".$values[count($values) - 1]."'";
$query .= ') ';
if (mysql_query($query)) return true;
else die("INSERT:".mysql_error());
}
} ?>
以下是我使用INSERT的代码:
<?php
if (!empty($_POST)) {
// POST PROCESS
$title = $_POST['title'];
$short_desc = $_POST['short_desc'];
$content = $_POST['content'];
// FILE UPLOAD
if (isset($_FILES['avatar'])) {
$avatar = FITUtils::uploadFile($_FILES['avatar']['name'], $_FILES['avatar']['tmp_name'], "../uploads");
}
else $avatar = null;
// Insert
FITQuery::insert('news', array('title','short_desc','content','avatar','created_date'),
array($title, $short_desc, $content, $avatar, FITUtils::getDate()));
FITUtils::redirect('index.php?page=news');
}
else {
}
?>
我很确定这不是INSERT函数的问题,因为我已经尝试过“传统”方式,但仍然得到了相同的结果。有人对我有一些建议吗?我是PHP的新手,所以我希望你们可以帮助我。谢谢!
答案 0 :(得分:3)
尝试将FITUtils::getDate()
更改为
date('Y-m-d H:i:s', strtotime(FITUtils::getDate()))
MySQL预期的日期格式与2011-12-17 04:20:00
类似,对应于上面建议中传递给Y-m-d H:i:s
函数的“格式”参数date
。
我不知道FITUtils::getDate()
返回的日期格式。如果它是一个字符串,那么strftime
会将其转换为时间戳,因此我们可以将其用作date
函数的第二个参数。如果它已经返回时间戳,那么您可以尝试使用以下代码:
date('Y-m-d H:i:s', FITUtils::getDate())
答案 1 :(得分:0)
使用变量存储日期和时间,您的数据库字段必须具有字段类型Date。 并按照这样做:
$date_time= SYSDATE;
然后使用此变量使用查询插入数据库。
希望它运作良好,因为我已经使用过这个......