我正在编写一个网站,但在使用 PHP 将日期和时间保存到 MySQL 数据库时遇到问题,但我得到的日期只是 0000-00-00 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 的新手,所以我希望你们能帮助我。谢谢!
最佳答案
尝试将 FITUtils::getDate()
更改为
date('Y-m-d H:i:s', strtotime(FITUtils::getDate()))
MySQL期望的日期格式类似于2011-12-17 04:20:00
,它对应于传递的“format”参数Y-m-d H:i:s
到上面建议中的 date
函数。
我不知道 FITUtils::getDate() 返回的日期格式
。如果是字符串,那么strftime会将其转换为时间戳,因此我们可以将其用作date函数的第二个参数。如果它已经返回时间戳,那么您可以尝试以下代码:
日期('Y-m-d H:i:s', FITUtils::getDate())
关于php - 使用 PHP 将日期和时间保存到 MySQL 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8542530/