2011-12-17 2 views
0

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

Ниже функция ВСТАВИТЬ хранить во внешнем файле 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()); 
    } 

} ?> 

И вот код, где я использую 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, поэтому надеюсь, что вы, ребята, можете мне помочь. Благодаря!

ответ

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; 

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

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

Смежные вопросы