Solución: wpdb update no guarda timestamp actual correctamente

9 mar 2014, 15:42:06
Vistas: 14.4K
Votos: 11

Estoy usando $wpdb->update para añadir datos a una tabla personalizada, intento añadir el timestamp actual pero no guarda los valores correctos (se guarda 0000-00-00 00:00:00).

Código de ejemplo:

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

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

Sormano Sormano
9 mar 2014 15:45:59

@Sormano time() devuelve un entero, no una cadena.

fuxia fuxia
9 mar 2014 15:56:41

Tienes razón, usé strtotime() demasiadas veces... código correcto: date( "Y-m-d h:i:s", time() );

Sormano Sormano
9 mar 2014 15:58:40

todavía guardando 0000-00-00 00:00:00.... columna de la db(edit timestamp NOT NULL DEFAULT '0000-00-00 00:00:00')

user759235 user759235
9 mar 2014 16:06:55

encontré el problema, %d debería ser %s. pero veo que guarda la hora del servidor no la zona horaria actual

user759235 user759235
9 mar 2014 16:16:59
Todas las respuestas a la pregunta 1
0
19

Parece que has resuelto todo excepto el problema con la hora:

encontré el problema %d debería ser %s. pero veo que guarda la hora del servidor no la zona horaria actual

WordPress tiene varias funciones relacionadas con fecha/hora. En este caso, parece que lo que necesitas es current_time(), que...

Devuelve la hora local actual del blog en uno de dos formatos: el formato de tipo de dato timestamp de MySQL (es decir, YYYY-MM-DD HH:MM:SS) o el formato de timestamp Unix (es decir, epoch).

Entonces lo que necesitarías es:

$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