wpdb update не сохраняет текущую временную метку

9 мар. 2014 г., 15:42:06
Просмотры: 14.4K
Голосов: 11

Использую $wpdb->update для добавления данных в пользовательскую таблицу, пытаюсь добавить текущую временную метку, но сохраняются неправильные значения (сохраняется 0000-00-00 00:00:00).

Обзор кода:

  $wpdb->update('mytable',
      array(
          'value' => 'hello world', 
          'edit'  => date("Y-m-d h:i:s") // сохраняется как 0000-00-00 00:00:00
      ),
      array(
          'option_name' => 'the row'
      ), 
      array('%s, %s')
  );
5
Комментарии

Попробуйте: date( "Y-m-d h:i:s", strtotime( time() );

Sormano Sormano
9 мар. 2014 г. 15:45:59

@Sormano time() возвращает целое число, а не строку.

fuxia fuxia
9 мар. 2014 г. 15:56:41

Вы правы, слишком часто использовал strtotime()... правильный код: date( "Y-m-d h:i:s", time() );

Sormano Sormano
9 мар. 2014 г. 15:58:40

все еще сохраняется 0000-00-00 00:00:00.... столбец БД(edit timestamp NOT NULL DEFAULT '0000-00-00 00:00:00')

user759235 user759235
9 мар. 2014 г. 16:06:55

нашел проблему - %d должно быть %s. но вижу, что сохраняется время сервера, а не текущего часового пояса

user759235 user759235
9 мар. 2014 г. 16:16:59
Все ответы на вопрос 1
0
19

Кажется, вы решили все проблемы, кроме вопроса со временем:

обнаружил проблему: %d должно быть %s. но я вижу, что сохраняется серверное время, а не текущий часовой пояс

WordPress имеет несколько функций для работы с датой и временем. В данном случае, похоже, вам нужна функция current_time(), которая...

Возвращает текущее локальное время блога в одном из двух форматов: либо в формате типа данных временной метки MySQL (т.е. YYYY-MM-DD HH:MM:SS), либо в формате Unix-временной метки (т.е. эпоха).

Таким образом, вам нужно использовать:

$wpdb->update(
      'mytable',
      array(
          'value' => 'hello world', 
          'edit'  => current_time( 'mysql' )
      ),
      array(
          'option_name' => 'the row'
      ), 
      array('%s, %s')
);
9 мар. 2014 г. 16:40:01