Величайшая функция возвращает неопределенное свойство
-
16-10-2019 - |
Вопрос
Я использую 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