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í.

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
scroll top