2016-07-24 8 views
-2

Guten Abend, ich bin neu in OOP und ich versuche, einige Ergebnisse mit MYSQLI fetch assoc zu bekommen, aber ich habe ein Problem: nur ein Ergebnis wird in einer Endlosschleife zurückgegeben. Bitte beachten Sie den Code unten und lassen Sie mich wissen, was das Problem kann sein:PHP OOP Class Query

class Database{ 
    private $host; 
    private $user; 
    private $password; 
    private $db; 
    private $mysqli; 


    function __construct($host,$user,$pass,$data) { 
     $this->host  = $host; 
     $this->user  = $user; 
     $this->pass  = $pass; 
     $this->data  = $data; 
     $this->mysqli = new mysqli($this->host, $this->user, $this->pass, $this->data); 
    } 

    public function GetNewsArticles(){ 
     $querystr="SELECT newsarticle.Id, newsarticle.Title from newsarticle GROUP BY newsarticle.Id ORDER BY newsarticle.id DESC"; 
     return $this->mysqli->query($querystr); 
    } 

} 

$db= new Database("localhost","root","","news"); 
$db->GetNewsArticles(); 

while($row = $db->GetNewsArticles()->fetch_assoc()){ 
    echo $row["Id"]; 
} 

Antwort

1
while($row = $db->GetNewsArticles()->fetch_assoc()) 

Diese Zeile bewirkt, dass Ihre Funktion ausgeführt wird und immer wieder neue Ergebnisse zurückgegeben werden. Sie landen also in einer Endlosschleife und holen immer das erste Ergebnis.

Das Update:

$result = $db->GetNewsArticles(); 

while($row = $result->fetch_assoc()){ 
    echo $row["Id"]; 
} 
+0

Danke Sir es funktionierte. –

+0

@ coder_1432 Gern geschehen. Achten Sie darauf, die guten Antworten zu verbessern und einen von ihnen auszuwählen. Glückliche Kodierung. – BeetleJuice

1

Sie müssen die MySQLi_Result Objekt in einer Variablen erfassen, die Sie von GetNewsArticles() zurückkehren und rufen fetch_assoc() auf dass:

$db= new Database("localhost","root","","news"); 
$results = $db->GetNewsArticles(); 

while($row = $results->fetch_assoc()){ 
    echo $row["Id"]; 
} 
+0

Danke es funktionierte –