функция 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
. Я не уверен, что я здесь делаю не так.
2 answers
Я думаю, что вы хотите использовать get_var()
, а не get_row()
- глядя на документацию, MySQLGREATEST
просто возвращает одно значение.
$results
тогда будет просто значение наибольшего (будь то up
или down
).
Если вы хотите величайшего up
и величайший down
, используй;
$wpdb->get_row("SELECT GREATEST(up) AS 'up', GREATEST(down) AS 'down' ...")
Соглашаясь с врачом... Если вы используете GREATEST(), пожалуйста, сделайте себе одолжение, зная, что вы делаете. Он возвращает значение bigint при вводе данных, и ваш запрос не дает результирующему столбцу никакого имени. Таким образом, $wpdb, очевидно, будет жаловаться, когда вы попытаетесь получить доступ к недоступному столбцу. :-)
Я полагаю, что вы ищете это:
SELECT up - down as total, up, down FROM $table WHERE voted_post_id = $post_id