wpdb update nu adaugă timestamp curent corect

9 mar. 2014, 15:42:06
Vizualizări: 14.4K
Voturi: 11

Folosesc $wpdb->update pentru a adăuga date într-un tabel personalizat, încerc să adaug timestamp-ul curent dar nu salvează corect (se salvează 0000-00-00 00:00:00).

Codul de bază:

  $wpdb->update('mytable',
      array(
          'value' => 'hello world', 
          'edit'  => date("Y-m-d h:i:s") //salvează 0000-00-00 00:00:00
      ),
      array(
          'option_name' => 'the row'
      ), 
      array('%s, %s')
  );
5
Comentarii

Încearcă: date( "Y-m-d h:i:s", strtotime( time() );

Sormano Sormano
9 mar. 2014 15:45:59

@Sormano time() returnează un întreg, nu un șir de caractere.

fuxia fuxia
9 mar. 2014 15:56:41

Ai dreptate, am folosit strtotime() de prea multe ori... codul corect: date( "Y-m-d h:i:s", time() );

Sormano Sormano
9 mar. 2014 15:58:40

încă salvează 0000-00-00 00:00:00.... coloana db(edit timestamp NOT NULL DEFAULT '0000-00-00 00:00:00')

user759235 user759235
9 mar. 2014 16:06:55

am găsit problema, %d ar trebui să fie %s. dar observ că salvează ora serverului, nu fusul orar actual

user759235 user759235
9 mar. 2014 16:16:59
Toate răspunsurile la întrebare 1
0
19

Pare că ai rezolvat totul, cu excepția problemei legate de timp:

am identificat problema %d ar trebui să fie %s. dar observ că salvează timpul serverului, nu fusul orar curent

WordPress are o serie de funcții legate de data/ora. În acest caz, se pare că ai nevoie de current_time(), care...

Returnează ora locală curentă a blogului într-unul din cele două formate, fie formatul tipului de dată timestamp MySQL (adică AAAA-LL-ZZ OO:MM:SS) fie formatul timestamp Unix (adică epoch).

Deci, ceea ce ar trebui să folosești este:

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