无法使用PHP将日期和时间保存到MySQL

时间:2011-12-17 04:13:36

标签: php mysql date time

我正在写一个网站,我遇到了使用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的新手,所以我希望你们可以帮助我。谢谢!

2 个答案:

答案 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;

然后使用此变量使用查询插入数据库。

希望它运作良好,因为我已经使用过这个......