MySQL-Abfrage per while()
Hallo,
ich habe in einer MySQL-Tabelle mehrere Datensätze mit dem Format id|uid|fachname.
Diese möchte ich per
SELECT fachname FROM tabelle WHERE uid='32' 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:
<?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'].', ';
}
?>
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 schreiben
Antwort 1 von MixMax vom 07.05.2019, 22:38 Options
versuch mal mysql_fetch_result anstelle von mysql_fetch_assoc
Antwort 2 von mooritz vom 07.05.2019, 22:40 Options
Gleiches Ergebnis. Auch bei mysql_fetch_array. Aber danke für deine Antwort!
Antwort 3 von MixMax vom 07.05.2019, 22:46 Options
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 vom 07.05.2019, 22:50 Options
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 vom 07.05.2019, 23:04 Options
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 vom 07.05.2019, 23:42 Options
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 vom 07.05.2019, 23:51 Options
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 vom 08.05.2019, 00:40 Options
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!