@zeaovede

Wordpress: как избавится от PHP Notice?

В functions.php добавил функцию
/*Для вывода дата регистрации юзера в мой аккаунт */
function getUserRegDate($id = 0){
global $wpdb;
$date = $wpdb->get_var($wpdb->prepare('SELECT user_registered FROM '.$wpdb->users.' WHERE ID="'.$id.'"'));
$date = explode(' ', $date);
$date = explode('-', $date[0]);
return $date[2].'/'.$date[1].'/'.$date[0];
}

В нужном месте осуществил вывод
<?php echo getUserRegDate(get_current_user_id()); ?>

Код рабочий, но получил PHP Notice - "Функция wpdb::prepare вызвана неправильно. Аргумент запроса метода wpdb::prepare() должен содержать описатель преобразований. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 3.9.0.) in /home/e/evgsam/test.calc/public_html/wp-includes/functions.php on line 6031".

Как избавится от PHP Notice?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 2
vhood
@vhood
Не забывайте отмечать решения
prepare - это "подготовить", а "подготавливают" некий шаблон, в который потом пробрасывают значения. "Подготавливать" без значений некорректно.

- $wpdb->get_var($wpdb->prepare('SELECT user_registered FROM '.$wpdb->users.' WHERE ID="'.$id.'"'));
+ $wpdb->get_var('SELECT user_registered FROM '.$wpdb->users.' WHERE ID="'.$id.'"');


Однако, выглядит это не безопасно (как минимум, $id не типизирован). По-этому лучше пробросить его в prepare

$wpdb->get_var(
    $wpdb->prepare("SELECT user_registered FROM $wpdb->users WHERE ID=%d", $id)
);
Ответ написан
@weart
Я бы рекомендовал избегать лишний раз кастомных запросов в базу

$udata = get_userdata( $user->ID );
$registered = $udata->user_registered;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы