2016-04-25 11 views
2

Ich habe versucht, eine Abfrage auszuführen und durch das Ergebnis zu iterieren. Die echo "<h1>" . $row["SummonerId"]. "</h1>"; funktioniert und es druckt es auf der Seite aus. Aber irgendwie ist dieser Fehler nach dem Druckergebnis aufgetreten:Schwerwiegender Fehler: Aufruf einer Memberfunktion fetch_assoc() für die Zeichenfolge

Fatal error: Call to a member function fetch_assoc() on string

Ich sah viele Fehler ähnlich. Aber das sind on a non-object und nicht on string. Was ist das für ein Fehler?

Hier ist mein Code:

$servername = "localhost:3307"; 
$username = "root"; 
$password = ""; 
$dbname = "st-datacollector"; 

$conn = new mysqli($servername, $username, $password, $dbname); 

$sql = "SELECT * FROM summoner"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     echo "<h1>" . $row["SummonerId"]. "</h1>"; 
     $summonerId = $row["SummonerId"]; 
     $url = "https://euw.api.pvp.net/api/lol/euw/v1.3/game/by-summoner/" . $summonerId . "/recent?api_key=" . $api_key; 

     $result = file_get_contents($url); 
     $resultJSON = json_decode($result); 


     foreach($resultJSON_decoded->games as $game){ 
      echo $game->gameMode." ".$game->gameType." ".$game->subType; 
      echo "<br>"; 
     }   
    } 
} else { 
    echo "0 results"; 
} 

$conn->close(); 
+0

Eine Zeichenfolge ist ein Nicht-Objekt. – AbraCadaver

+0

In dem Code in Ihrer Frage wird 'fetch_assoc()' nicht verwendet, nachdem '$ row [" SummonerId "]' ausgegeben wurde, und '$ result' kann keine Zeichenkette sein, daher scheint es unmöglich zu sein, diesen spezifischen Fehler zu erzeugen . Ist mehr Code nicht enthalten? –

+0

Ja, ich sehe nicht, wie dies zu diesem Fehler führen könnte. – VikingBlooded

Antwort

4

$result Variable Schleife durch mysql Abfrage verwendet wird, haben Sie unterschiedliche Variablennamen in Ihrer Schleife

$servername = "localhost:3307"; 
$username = "root"; 
$password = ""; 
$dbname = "st-datacollector"; 

$conn = new mysqli($servername, $username, $password, $dbname); 

$sql = "SELECT * FROM summoner"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     echo "<h1>" . $row["SummonerId"]. "</h1>"; 
     $summonerId = $row["SummonerId"]; 
     $url = "https://euw.api.pvp.net/api/lol/euw/v1.3/game/by-summoner/" . $summonerId . "/recent?api_key=" . $api_key; 

     $fcontents = file_get_contents($url); 
     $resultJSON = json_decode($fcontents); 

     foreach($resultJSON_decoded->games as $game){ 
      echo $game->gameMode." ".$game->gameType." ".$game->subType; 
      echo "<br>"; 
     }   
    } 
} else { 
    echo "0 results"; 
} 

$conn->close(); 

Noch eine kleine Sache, die ich bemerkte zu verwenden. $resultJSON und $resultJSON_decoded stimmt nicht innerhalb der Schleife überein

Verwandte Themen