Проблемы с сохранением даты и времени в MySQL с использованием PHP - PullRequest
0 голосов
/ 17 декабря 2011

Я пишу веб-сайт, и у меня возникают проблемы с сохранением даты и времени в базе данных MySQL с использованием PHP, но все, что я получил за эту дату, - это 00:00:00 Я не уверен, в чем проблема с моим кодом, поэтому надеюсь, что вы, ребята, поможете мне указать на это.

Ниже приведена функция INSERT, которую я для удобства сохраняю во внешнем php-файле

 <?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());
    } 

} ?>

А вот код, где я использую ВСТАВКУ:

<?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 ]

3 голосов
/ 17 декабря 2011

Попробуйте изменить 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, переданному в *Функция 1009 * в предложении выше.

Я не знаю формат даты, возвращаемый FITUtils::getDate().Если это строка, то strftime преобразует ее в метку времени, поэтому мы можем использовать ее в качестве второго параметра для функции date.Если он уже возвращает временную метку, вместо этого вы можете попробовать следующий код:

date('Y-m-d H:i:s', FITUtils::getDate())

0 голосов
/ 26 декабря 2012

Используйте переменную для хранения даты и времени, поле вашей базы данных должно иметь тип поля Дата.и сделайте это следующим образом:

$date_time= SYSDATE;

Затем используйте эту переменную для вставки в базу данных с помощью запроса.

Надеюсь, она работает хорошо, так как я использовал этот ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...