Величайшая функция возвращает неопределенное свойство

wordpress.stackexchange https://wordpress.stackexchange.com/questions/4842

Вопрос

Я использую MySQL Величайший () Функция для сравнения двух полей таблицы и отображения в цикле с самым высоким значением целого числа. 2 поля состоят из баллов голосования за посты: вверх или вниз.

function vote_results($post_id) { 
  global $wpdb; 
  $table = $wpdb->prefix . "post_votes";    
  $results = $wpdb->get_row( "SELECT GREATEST (up, down) FROM $table WHERE voted_post_id = $post_id" );
  echo $results->up; //echo if highest value
  echo $results->down; //echo if highest value

}

Затем в моем цикле я называю функцией, но получаю Notice: Undefined property: stdClass::$up за

echo $results->up;

и то же уведомление для down. Анкет Я не уверен, что я делаю здесь не так.

Это было полезно?

Решение

Я думаю, ты хочешь использовать get_var(), нет get_row() - Глядя на документацию, Mysql's GREATEST Просто возвращает одно значение.

$results Тогда будет просто ценностью величайшего (будь то up или же down).

Если вы хотите величайший up а также величайший down, использовать;

$wpdb->get_row("SELECT GREATEST(up) AS 'up', GREATEST(down) AS 'down' ...")

Другие советы

Согласитесь с TheDeadmedic ... если вы используете величайший (), сделайте себе одолжение, зная, что вы делаете. Он возвращает Bigint, когда кормил INT, и ваш запрос не дает полученному столбцу какое -либо имя. Итак, $ WPDB, очевидно, будет жаловаться, когда вы попытаетесь получить доступ к столбцу, который недоступен. :-)

Я считаю, что вы ищете это:

SELECT up - down as total, up, down FROM $table WHERE voted_post_id = $post_id
Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top