online 1
gast (50)

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

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon mooritz vom 07.05.2019, 22:30 Options

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!

Ähnliche Themen

PHP / MySQL
JoFi-Ha  06.05.2007 - 107 Hits - 4 Antworten

SQL-Abfrage mit einer Variablen
networking  15.11.2007 - 221 Hits - 3 Antworten

MySQL-Abfrage ->zählen
stef12  24.11.2007 - 83 Hits - 2 Antworten

Von Datum 3 Tage abziehen
claudiagauss  03.03.2008 - 64 Hits - 3 Antworten

MYSQL Abfrage 5 -> 4
derleinich  13.04.2008 - 40 Hits -

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026