it-swarm.com.de

die Funktion greatest () gibt eine undefinierte Eigenschaft zurück

Ich verwende die Funktion mysql GREATEST () , um zwei Tabellenfelder zu vergleichen und in einer Schleife eines mit dem höchsten ganzzahligen Wert anzuzeigen. Die 2 Felder bestehen aus Abstimmungsergebnissen für Posts: NACH OBEN oder NACH UNTEN.

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

}

Dann rufe ich in meiner Schleife die Funktion auf, bekomme aber Notice: Undefined property: stdClass::$up für

echo $results->up;

und der gleiche Hinweis für down. Ich bin nicht sicher, was ich hier falsch mache.

1
wpStudent

Ich denke, Sie möchten get_var() verwenden, nicht get_row() - . Wenn Sie sich die Dokumentation ansehen , gibt MySQLs GREATEST nur einen einzelnen Wert zurück.

$results wird dann nur der Wert des größten sein (sei es up oder down).

Wenn Sie die größte up und die größte down wollen, verwenden Sie;

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

Zustimmung zu TheDeadMedic ... Wenn Sie GREATEST () verwenden, tun Sie sich selbst einen Gefallen, indem Sie wissen, was Sie tun. Es wird eine Ganzzahl zurückgegeben, wenn Eingaben eingegeben werden, und Ihre Abfrage gibt der resultierenden Spalte keinen Namen. Also wird sich $ wpdb offensichtlich beschweren, wenn Sie versuchen, auf eine Spalte zuzugreifen, die nicht verfügbar ist. :-)

Ich glaube, Sie suchen das:

SELECT up - down as total, up, down FROM $table WHERE voted_post_id = $post_id
1