web-dev-qa-db-fra.com

Wordpress insert NOW () dans la colonne TIMESTAMP renvoie tous les zéros

Je souhaite insérer un TIMESTAMP dans la colonne TIMESTAMP de ma colonne, mais je reçois toujours tous les zéros.

Voici mon insert:

$now = 'NOW()';

// insert the date into the db
 $wpdb->insert( 
    'wp_date', 
    array(
        'name' => $name,
        'date' => $now    
    ), 
    array( 
        '%s',
        '%s'
    ) 
); // end insert
2
Ollicca Mindstorm

Je n’avais pas essayé de le reproduire, mais la raison probable est que ce que vous voulez à utiliser dans la requête est une fonction SQL (NOW()) mais que vous "dites" WordPress à utiliser est un string.

En déclarant que son format est %s, cela signifie qu'il a été filtré et mis entre guillemets, ce qui en fait quelque chose de similaire à 'NOW()' que MySQL considère probablement comme un horodatage très invalide.

Vous devrez soit générer une requête SQL brute pour cela (sans l'aide d'insert helper), soit générer et fournir une chaîne d'horodatage côté PHP.

2
Rarst

Vous ne pouvez pas utiliser 'NOW()' dans $wpbd->insert pour définir l'horodatage actuel. Je suggère d'utiliser WP la fonction intégrée current_time(). Le premier paramètre doit être 'mysql' (pour obtenir une chaîne compatible avec MySQL). La seconde spécifie dans quel fuseau horaire vous souhaitez recevoir le résultat: false est l'heure locale de votre serveur, true est GMT. Donc, le code dont vous avez besoin est:

$now = current_time('mysql', false);

La sortie de $now sera l'heure de votre serveur, par exemple: 2014-07-20 18:46:23.

En savoir plus sur current_time() - http://codex.wordpress.org/Function_Reference/current_time

4
MaximOrlovsky