Aktualizacja wpdb dodaje bieżący znacznik czasu nie działa

10

Więc używając aktualizacji $ wpdb->, aby dodać trochę danych do tabeli niestandardowej, próbując dodać bieżący znacznik czasu, ale nie zapisuję właściwych rzeczy (0000-00-00 00:00:00 to jest zapisywane).

kod przeglądowy

  $wpdb->update('mytable',
      array(
          'value' => 'hello world', 
          'edit'  => date("Y-m-d h:i:s") //saves 0000-00-00 00:00:00
      ),
      array(
          'option_name' => 'the row'
      ), 
      array('%s, %s')
  );
użytkownik759235
źródło
Spróbuj:date( "Y-m-d h:i:s", strtotime( time() );
Sormano
@Ormormano time()zwraca liczbę całkowitą, a nie ciąg znaków.
fuxia
1
Masz rację, używałeś strtotime () wiele razy ... odpowiedni kod:date( "Y-m-d h:i:s", time() );
Sormano
wciąż zapisuję 0000-00-00 00:00:00 .... db col ( editznacznik czasu NIE NULL DOMYŚLNY „0000-00-00 00:00:00”)
759235
znaleziono problem% d powinien być% s. ale widzę, że oszczędza czas serwera, a nie bieżącą strefę czasową
759235

Odpowiedzi:

14

Wyglądało na to, że rozwiązałeś wszystko oprócz czasu:

znaleziono problem% d powinien być% s. ale widzę, że oszczędza czas serwera, a nie bieżącą strefę czasową

WordPress ma wiele funkcji związanych z datą / czasem . W tym przypadku wygląda na to, że potrzebujesz tego current_time(), co ...

Zwraca bieżący czas lokalny bloga w jednym z dwóch formatów, albo typu danych datownika MySQL (tj. RRRR-MM-DD GG: MM: SS), albo formatu datownika Unix (tj. Epoki).

Tak więc powinieneś potrzebować:

$wpdb->update(
      'mytable',
      array(
          'value' => 'hello world', 
          'edit'  => current_time( 'mysql' )
      ),
      array(
          'option_name' => 'the row'
      ), 
      array('%s, %s')
);
s_ha_dum
źródło