2016-04-18 6 views
0

Rückkehr Ich habe eine FunktionPHP-Funktion wird alle Daten in MySQL-Tabelle nicht

function get_table_content(){ 
$sql = "SELECT * FROM my_table WHERE id > 0"; 
$result = $this->query($sql); 
while ($row = $this->fetch($result)){ 
return ($row); 
} 
} 

Das Problem ist, wenn ich diese Funktion aufrufen sie geben nur den ersten Eintrag in der Datenbank. Wie kann ich diese Arbeit machen, die es annimmt, um über alle Daten in der Tabelle zurückzukehren. Ich habe dies auch versucht, und es ist nicht zu

function get_table_content(){ 
    global $database_connection; 
    $sql = "SELECT * FROM my_table WHERE id > 0"; 
    $result = mysqli_query($database_connection, $sql); 
    while ($row = mysqli_fetch_assoc($result)){ 
    return ($row); 
    } 
    } 

Arbeits Ich denke, der beste Weg, um dies zu realisieren ist ein Array zurück und es ist mein foreach Betrieb zu tun, aber ich kann es nicht zu arbeiten.

Kann mir jemand aushelfen Bitte. P.S Ich werde es vorziehen, um ein Array aller Daten in den Daten zurückzugeben, so dass ich eine foreach-Operation darauf machen kann. Danke

+0

da Sie Rückkehr verwenden, das ist, warum Sie sind nur einen Datensatz –

Antwort

2

Das Problem ist, in der while Schleife nach dem Abrufen einer Zeile aus der Ergebnismenge, die Sie das Ergebnis der Funktion zurückgeben, und damit erhalten Sie nur die erste Zeile aus der Ergebnismenge. Verwenden Sie entweder Funktion oder ein Array in der while Schleife, um das Ergebnis zu speichern.

Methode (1):

function get_table_content(){ 
    global $database_connection; 
    $sql = "SELECT * FROM my_table WHERE id > 0"; 
    $result = mysqli_query($database_connection, $sql); 

    return mysqli_fetch_all($result); 
} 

Methode (2):

function get_table_content(){ 
    global $database_connection; 
    $sql = "SELECT * FROM my_table WHERE id > 0"; 
    $result = mysqli_query($database_connection, $sql); 

    $r = array(); 
    while ($row = mysqli_fetch_assoc($result)){ 
     $r[] = $row; 
    } 
    return $r; 
} 
+0

Wenn ich Methode (2) benutze und die Funktion anrufe, bekomme ich einen HINWEIS: Array zum String (PATHNAME) ... was mache ich falsch? – Ukor

+1

@Ukor Ich habe beide Methoden getestet und es funktioniert gut für mich. In welcher Zeile erhalten Sie diesen Fehler? * HINWEIS: Array to string ... * bedeutet, dass Sie versuchen, ein Array zu "echo". Führen Sie 'var_dump (get_table_content());' aus, um das Problem zu beheben. –

+0

Die beiden Methoden funktionieren, ich denke, mein Problem besteht darin, das Array durchzulaufen und sie wiederzugeben. – Ukor

5

return stoppt sofort die Ausführung Ihrer Funktion während der ersten Iteration der Schleife. Um alle Datensätze zu erhalten und bringt sie:

$result = mysqli_query($database_connection, $sql); 
return mysqli_fetch_all($result); 

Randbemerkung: Das ist weniger effizient dann eine Ergebnismenge Ressource zurückkehrt und Schleife durch sie als außerhalb Ihrer Funktion benötigt. fetch_all müssen alle Ergebnisse in Array konvertieren, dann durchlaufen Sie vermutlich dieses Array später.

+0

Am leider immer, ich noch don 't get, sagst du, ich sollte die while-Schleife entfernen oder die return-Anweisung außerhalb der while-Schleife verwenden ... Bitte hilf mir zu verstehen. – Ukor

+0

@Ukor Ja, Sie können die while-Schleife entfernen und einfach mysqli_fetch_all aufrufen, um die gesamte Ergebnismenge in ein Array zu bekommen und sie zurückzugeben. –

+0

Vielen Dank, dass Sie darauf hingewiesen haben. – Ukor

1

Sie haben eine Rückgabe innerhalb Ihrer while-Schleife, die diese Schleife beendet und die erste Datenzeile zurückgibt.

+1

Wo ist die Lösung? Sie haben es eilig, Antworten zu veröffentlichen. –

Verwandte Themen