Domanda

sto usando il mysql GREATEST () funzione per confrontare due campi di tabella e visualizzare in un ciclo sia quello con il valore intero più alto. I 2 campi costituiti da punteggi voto per posti:. UP o DOWN

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

}

Poi nel mio ciclo chiamo la funzione, ma ottengo Notice: Undefined property: stdClass::$up per

echo $results->up;

e lo stesso preavviso per down. Io non sono sicuro di quello che sto facendo male qui.

È stato utile?

Soluzione

Penso che si desidera utilizzare get_var(), non get_row() - guardando la documentazione , GREATEST di MySQL restituisce solo un singolo valore.

$results sarà quindi solo il valore del più grande (sia esso up o down).

Se si desidera che il più grande up e il più grande down, uso;

$wpdb->get_row("SELECT GREATEST(up) AS 'up', GREATEST(down) AS 'down' ...")

Altri suggerimenti

In accordo con TheDeadMedic ... Se si utilizza GREATEST (), si prega di fare un favore da sapere cosa si sta facendo. Esso restituisce un bigint se somministrate int, e la query non dà la colonna risultante qualsiasi nome. Così $ wpdb ovviamente lamentarsi quando si tenta di accedere a una colonna che non è disponibile. : -)

Credo che stai cercando in questo modo:

SELECT up - down as total, up, down FROM $table WHERE voted_post_id = $post_id
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top