функция greatest() возвращает неопределенное свойство


Я использую функцию mysql GREATEST() для сравнения двух полей таблицы и отображения в цикле любого из них с наибольшим целочисленным значением. 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. Я не уверен, что я здесь делаю не так.

Author: wpStudent, 2010-12-03

2 answers

Я думаю, что вы хотите использовать get_var(), а не get_row() - глядя на документацию, MySQLGREATEST просто возвращает одно значение.

$results тогда будет просто значение наибольшего (будь то up или down).

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

$wpdb->get_row("SELECT GREATEST(up) AS 'up', GREATEST(down) AS 'down' ...")
 4
Author: TheDeadMedic, 2010-12-03 18:04:59

Соглашаясь с врачом... Если вы используете GREATEST(), пожалуйста, сделайте себе одолжение, зная, что вы делаете. Он возвращает значение bigint при вводе данных, и ваш запрос не дает результирующему столбцу никакого имени. Таким образом, $wpdb, очевидно, будет жаловаться, когда вы попытаетесь получить доступ к недоступному столбцу. :-)

Я полагаю, что вы ищете это:

SELECT up - down as total, up, down FROM $table WHERE voted_post_id = $post_id
 1
Author: Denis de Bernardy, 2010-12-03 21:00:40