2016-04-24 10 views
1

Ich Abfrage und Rückgabe einer numerischen Spalte aus einer MySQL-Tabelle in ein JSON-Array. Wenn ich jedoch versuche, auf das letzte Element im Array zuzugreifen, wird es als String zurückgegeben. Ich versuchte es mit einem int Casting, aber dann gibt es ein 0. Hier ist mein Code:Konvertieren von JSON-Array-Wert in Ganzzahl

public function get_latest_subcategory_id() { 

    $ids = $this->query("SELECT SubCategory_ID FROM SubCategory"); 
    if ($ids->num_rows > 0) { 

     $arr_json = array(); 
     while ($row = $ids->fetch_row()) { 
      $json = json_encode($row); 
      $arr_json[] = $json; 
     } 
     echo $arr_json[$ids->num_rows-1]; 
    } else 
     return null; 
} 

Gibt es eine Art, wie ich es als eine ganze Zahl abrufen kann?

+0

echo intval ($ array_json [$ ids-> num_rows-1], 10)? – hounded

+0

Gibt immer noch eine 0 ... – DeeTee

+0

Was ist Ihr endgültiges Ziel? Sie codieren jede Abfragezeile, bevor Sie sie zum Array hinzufügen. Ich denke, Sie müssen stattdessen ein Standard-Array erstellen und es am Ende verschlüsseln. – fusion3k

Antwort

2

Der JSON tut hier wirklich nichts. Es ist auch wirklich ineffizient, durch die gesamte Datenbank zu gehen, nur um die letzte Zeile zu bekommen. Warum nicht so etwas tun?

public function get_latest_subcategory_id() { 
    $ids = $this->query("SELECT SubCategory_ID FROM SubCategory ORDER BY SubCategory_ID DESC LIMIT 1"); 
    if ($ids->num_rows > 0) { 
     $row = $ids->fetch_row(); 
     return intval($row[0]); 
    } else 
     return null; 
} 
+0

Geht diese Methode nicht durch die gesamte Datenbank? – DeeTee

+0

@DeeTee Nein, 'ORDER BY SubCategory_ID DESC' weist MySQL an, die höchste SubCategory_ID zuerst zurückzugeben, und' LIMIT 1' weist MySQL an, nur das erste Ergebnis zurückzugeben. – Chris

Verwandte Themen