2017-04-14 4 views
0

Ich versuche, ein JSON-Array aus einer ausgewählten Tabelle meiner Datenbank zu füllen. Die Haupttabelle enthält alle Informationen von Benutzern, die ich 10 Mitglieder mit Top XP daraus auswählen möchte.füllen Json-Array mit Rangliste

Mein Code:

<?php 
$serverName = "MyServerName"; 
$dbUsername = "DatabaseUsername"; 
$dbPassword = "DatabasePassword"; 
$dbName = "DatabaseID"; 
$tableName = "TableName"; 

$conn = new mysqli($serverName, $dbUsername, $dbPassword, $dbName); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
try{ 
    if(isset($_POST['USERNAME'])){ 
     $userName = $_POST['USERNAME']; 
     $sqlTopMembers = "SELECT XP, username FROM $tableName LIMIT 10 ORDER BY XP DESC "; 
     if (!($result = $conn->query($sqlTopMembers))) 
      die($conn->error); 
     if ($result->num_rows) { 
      $i = 0; 
      $rankings = null; 
      while ($row = $result->fetch_assoc()) { 
       $rankings[$i] = $row; 
       $i++; 
      } 
      echo json_encode(array($tableName => $rankings)); 
    } 
}catch (Exception $e){ 
    echo "Error ", $e->getMessage(); 
} 
+0

Was ist das Problem? Der Text sieht aus wie abgehackt. –

Antwort

1

Zunächst einmal gibt es keinen Grund zu überprüfen, ob ein USERNAME gebucht wurde, wie Sie nie den USERNAME -field verwenden. Zweitens haben Sie einen schließenden Lockvogel verpasst.

Zumindest sollten Sie Ihre SQL-Anweisung neu ordnen - LIMIT NACH ORDER BY

$serverName = "MyServerName"; 
$dbUsername = "DatabaseUsername"; 
$dbPassword = "DatabasePassword"; 
$dbName = "DatabaseID"; 
$tableName = "TableName"; 

$conn = new mysqli($serverName, $dbUsername, $dbPassword, $dbName); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
try { 
    $sqlTopMembers = "SELECT XP, username FROM $tableName ORDER BY XP DESC LIMIT 10"; 
    if (!($result = $conn->query($sql))) 
        die($conn->error); 
    if ($result->num_rows) { 
        $rankings = []; 
        while ($row = $result->fetch_assoc()) { 
            $rankings[] = $row; 
        } 
        echo json_encode(array($tableName => $rankings)); 
    } 
} catch (Exception $e) { 
    echo "Error ", $e->getMessage(); 
} 
0

Change verwendet wird, folgt aus:

while ($row = $result->fetch_assoc()) { 
    $rankings[$i] = $row; 
    $i++; 
} 
echo json_encode(array($tableName => $rankings)); 

in diese:

while ($row = $result->fetch_array(MYSQL_ASSOC)) { 
    $rankings[$i] = $row; 
    $i++; 
} 
echo json_encode($rankings);