Warum wird nur der erste Datensatz von diesem PHP-Array zurückgegeben?

8

Ich versuche, vier Datensätze aus meiner MySQL-Datenbank zurückzugeben, aber nur der erste Datensatz wird zurückgegeben. Ich habe gesucht, aber ich bin mir nicht sicher, warum das so ist. Kann mir jemand in die richtige Richtung zeigen?

%Vor%     
Graham Snowdon 07.04.2014, 09:01
quelle

4 Antworten

5

Wie andere hier gesagt haben, müssen Sie dafür eine while-Schleife verwenden. Ich habe den Code ein wenig aufgeräumt und ein paar andere Dinge hinzugefügt, die Sie beachten sollten.

Der eigentliche Grund dafür ist, dass wenn Sie mysql_fetch_assoc verwenden, eine Ergebnisressource zurückkehrt und sie aus den Ressourcen entfernt, die sie zurückgeben muss. Wenn Sie also versuchen, es in einem Array zu speichern, erhalten Sie das erste im Array und sonst nichts. Wenn Sie eine while-Schleife verwenden, heißt das im Prinzip "wenn mysql_fetch_assoc etwas zu geben hat, dann machen Sie den Code innerhalb der Schleife".

%Vor%

Die Kommentare im Code gehen durch meine Hauptpunkte.

Ich habe auch das $ cam = $ _POST ['cam'] von innerhalb der Schleife nach draussen bewegt, da es nicht in die Schleife gehen muss, da sein Wert immer der gleiche ist, ungeachtet dessen welchen Loop-Eintrag du überlegst.

    
Seer 07.04.2014, 09:19
quelle
6

Sie sollten die Schleife verwenden, um das Ergebnis zu holen:

%Vor%     
Barif 07.04.2014 09:03
quelle
3

Der Weg zur Verwendung von mysql_fetch_assoc oder mysql_fetch_array ist:

%Vor%     
Amritesh Anand 07.04.2014 09:15
quelle
2

Wenn Sie noch eine Erklärung brauchen:

1. Warum hast du nur einen Rekord?

Wenn Sie Folgendes angeben:

%Vor%

Dies bedeutet, dass Sie einen Datensatz aus der Datenbank erhalten, die Methode mysql_fetch_assoc() wurde nur einmal ausgeführt, daher ruft Ihre Methode eine Zeile aus der Datenbanktabelle auf.

2. Wie bekomme ich das zur Arbeit?

Wie Sie in dem von anderen gegebenen Beispiel gesehen haben, verwenden Sie stattdessen eine Schleife while .

2.1 Wie funktioniert die Schleife?

Wenn Sie anrufen:

%Vor%

Zuerst führen sie einen Befehl1 aus. Wenn es wahr zurückgibt, führe einen Befehl2 aus. Nachdem command2 beendet ist, führen Sie erneut command1 aus. Wenn es immer noch wahr ist, mach irgendeinen Befehl2 und so weiter ... Ein schönes Beispiel ist der Befehl, den du benutzt.

%Vor%

In dieser Schleife $ row = mysql_fetch_assoc ($ result) ist Somecommand1 wie erklärt. Diese Funktion gibt eine Ressource zurück, die gleich true ist, wenn eine andere Zeile von der Datenbank zurückgegeben wird. Nach einem Durchlauf des Codes innerhalb der while-Schleife springt er in die nächste Zeile. Dann wird die Funktion mysql_fetch_assoc erneut ausgeführt. Wenn in der Tabelle immer noch ein Datensatz vorhanden ist, der mit der Abfrage übereinstimmt, führt diese Funktion weiterhin alle in Ihrer while-Schleife enthaltenen Informationen aus.

Wenn Sie weitere Beispiele benötigen, werfen Sie einen Blick auf w3schools.com. Ich habe PHP von dort angefangen.

    
Poomrokc The 3years 07.04.2014 09:42
quelle

Tags und Links