mayores rendimientos de función () propiedad no definida
-
16-10-2019 - |
Pregunta
Estoy usando el MySQL MAYOR () función para comparar dos campos de la tabla y la visualización en un bucle de cualquiera de ellos con el valor entero más alto. Los 2 campos constan de voto calificaciones de mensajes:. ARRIBA o ABAJO
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
}
A continuación, en mi bucle que llamo la función, sino consigo Notice: Undefined property: stdClass::$up
para
echo $results->up;
y el mismo aviso para down
. No estoy seguro de lo que estoy haciendo mal aquí.
Solución
Pienso que desea utilizar get_var()
, no get_row()
- mirando la documentación , GREATEST
de MySQL sólo devuelve un solo valor.
$results
entonces ser simplemente el valor de la mayor (ya sea up
o down
).
Si desea que la mayor up
y la mayor down
, el uso;
$wpdb->get_row("SELECT GREATEST(up) AS 'up', GREATEST(down) AS 'down' ...")
Otros consejos
Coincidiendo con TheDeadMedic ... Si utiliza MAYOR (), por favor, hágase un favor a saber lo que está haciendo. Devuelve un BIGINT cuando se alimenta enteros, y la consulta no da la columna resultante cualquier nombre. Así $ wpdb, obviamente, se quejan cuando se intenta acceder a una columna que no está disponible. : -)
Creo que usted está buscando esto:
SELECT up - down as total, up, down FROM $table WHERE voted_post_id = $post_id