Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

MySQL-Abfrage per while()





Frage

Hallo, ich habe in einer MySQL-Tabelle mehrere Datensätze mit dem Format id|uid|fachname. Diese möchte ich per [i]SELECT fachname FROM tabelle WHERE uid='32'[/i] abfragen. In der Tabelle liegen momentan zwei Datensätze, die bei uid die 32 tragen: 3|32|englisch 4|32|deutsch Mein Code hierfür sieht wie folgt aus: [code] <?php $id = 32; $abfrage = "SELECT fachname FROM tabelle WHERE uid = '".$id."'"; $ergebnis = mysql_query($abfrage); $anzahl = mysql_num_rows($ergebnis); // ERGEBNIS: 2! while ($result = mysql_fetch_assoc($ergebnis)) { echo ''.$result['fachname'].', '; } ?>[/code] Als Ausgabe erhalte ich jedoch nur "deutsch, ". Woran liegt es, dass der erste Eintrag nicht ausgegeben wird, obwohl eine Ausgabe von $anzahl doch ganz klar 2 ausgibt? Dies Problem hatte ich schon diverse male, ich bin nie dahinter gekommen. Vielen Dank schonmal für Hilfe! :) lg Moritz

Antwort 1 von MixMax

versuch mal mysql_fetch_result anstelle von mysql_fetch_assoc

Antwort 2 von mooritz

Gleiches Ergebnis. Auch bei mysql_fetch_array. Aber danke für deine Antwort!

Antwort 3 von MixMax

auszug aus einem script wo es bei mir funktioniert:

$UniResult = mysql_query("select distinct uni from galaxy;");
...
  while ($Data = mysql_fetch_array($UniResult)) {
...
  }
...





also in der whileabfrage ist eigentlich noch ein and, also über den sinnfreien durchlauf nicht wundern...

Antwort 4 von MixMax

kanns sein das du Variablen doppelt verwendest - das halte ich zumindest für die wahrscheinlichste ursache, das er bei $ergebnis einfach am ende des letzten Datensatzes ist, weil du in einer anderen schleife zwischendurch nochmal $ergebnis verwendest.

Antwort 5 von mooritz

Die Variablen wurden noch nicht verwendet, ich hab sie auf Verdacht hin trotzdem mal in wirre Zahlenkombinationen, die garantiert nicht existieren können, geändert. Gleiches Ergebnis :(
@mixmax: Auch hierbei bekomme ich nur den 2. Datensatz ausgegeben..
Danke für die schnellen Antworten.. Hat noch wer weitere Ideen?

Antwort 6 von DeluxeStyle

hab schon ne weile nix mehr gemacht mit php, aber kann es sein, dass
mysql_num_rows($ergebnis);
das datarecordset auf den letzten datensatz setzt?
und dann wird nur der letzte datensatz in deiner while schleife ausgegeben

Antwort 7 von MixMax

ne - du kannst nach dem mysql_query das ergebniss so mit einer whileschleife und mysql_fetch_array durchgehen. ein Seek ist nicht nötig.


du kannst ja mal spaßeshalber n seek vor die while-schleife machen machen

mysql_data_seek($result, 0);
while ($result = mysql_fetch_assoc($ergebnis))
{

Antwort 8 von mooritz

So, ich habe des Problems Lösung gefunden. Es lag wohl daran, dass bei SELECT nur ein Wert angegeben war. Fragt man alle Werte ab, funktioniert es problemlos:

$abfrage = "SELECT * FROM faecher WHERE uid='32'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
echo $row['fachname'];
}

Danke trotzdem!

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: