#php #mysql #wordpress
#php #mysql #wordpress
Вопрос:
Я использую WordPress и получил базу данных с разными pid
s (личными идентификаторами) и полем activatedValue
, для которого уже установлено значение NULL
или current_time()
.
Я получил pid
и должен найти его activatedValue
ценность. Чем если бы поле было NULL
, я хочу заменить его на current_time()
. Я думал о чем-то подобном этому:
$pid = '52'; // example for a personal id
$activatedValue = $wpdb->get_var( "SELECT activatedValue FROM $table_name WHERE pid = '$pid'" );
if( is_null($activatedValue) ) {
// replace activatedValue in database with current time
}
Как я могу это сделать?
Для меня есть несколько проблем в достижении этого. Я уже пробовал это делать:
$pid = '52';
if ( ! empty ( $pid ) ) {
global $wpdb;
$table_name = $wpdb->prefix . "prelaunchr";
$activatedValue = $wpdb->get_var( "SELECT activated FROM $table_name WHERE pid = '$pid'" );
if ( is_null($activatedValue) ) {
$currentTime = current_time();
$wpdb->query("UPDATE $table_name SET activated = NOW() WHERE pid = '$pid'");
}
}
Ответ №1:
Если вы хотите обновить значение в записи базы данных, вам нужно будет запустить инструкцию UPDATE, используя wpdb::query() .
if( is_null($example_field) ) {
$wpdb->query("UPDATE $table_name SET example_field = NOW() WHERE pid = '$pid'");
}
Комментарии:
1. Это предложение о том, как правильно получить текущее значение? У вас есть предложение о том, как заменить это значение на текущую временную метку? Это самая важная часть для меня!
2. смотрите Пересмотренный ответ
3. Большое спасибо @samonela, я вижу, что вы поняли мою проблему. Я обновил свой ответ до моего текущего кода, который не работает. Поле все еще отображается
NULL
после запуска кода. Могу ли я как-то проверить, успешно ли выполнен код?4. ах да — извините, я должен был посмотреть current_time(), чтобы убедиться, что это была функция, прежде чем публиковать это; вы можете использовать
now()
или CURRENT_TIMESTAMP5.
current_time();
действительно ли это функция, вы можете проверить это прямо здесь: developer.wordpress.org/reference/functions/current_time
Ответ №2:
Я думаю, вы можете изменить DB и вместо использования timestamp использовать datetime, затем:
$pid = '52';
if ( ! empty ( $pid ) ) {
global $wpdb;
$table_name = $wpdb->prefix . "prelaunchr";
$activatedValue = $wpdb->get_var( "SELECT activated FROM $table_name WHERE pid = '$pid'" );
if ( is_null($activatedValue) ) {
//Here you can change the TimeZone of the system//
date_default_timezone_set('America/Chicago');
$date = date('Y/m/d h:i:s', time());
$wpdb->query("UPDATE $table_name SET activated = '{$date}' WHERE pid = '$pid'");
}
}