maggiori rendimenti function () proprietà non definita
-
16-10-2019 - |
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.
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