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
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.
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