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:
also in der whileabfrage ist eigentlich noch ein and, also über den sinnfreien durchlauf nicht wundern...
$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?
@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
und dann wird nur der letzte datensatz in deiner while schleife ausgegeben
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))
{
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!
$abfrage = "SELECT * FROM faecher WHERE uid='32'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
echo $row['fachname'];
}
Danke trotzdem!

