WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 13.10.2001, 17:47   #1
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard mysql_fetch_object

ich habe das problem, daß ich 2 mysql_fetch_object hintereinander machen muß, die beide dasselbe auslesen, sich jedoch an unterschiedlichen stellen befinden.

$sql = "SELECT * FROM db";
$abfrage = mysql($sql, $verbindung);

while ($row = mysql_fetch_object($abfrage)) {
$vorname = $row->vorname;
}

...

while ($row = mysql_fetch_object($abfrage)) {
$vorname = $row->vorname;
$nachname = $row->nachname;
}

später dann wird in die 2. whileschleife jedoch nichtmal reingegangen. interessant ist, daß das skript perfekt funktioniert, wenn ich die 1. db-auslese weglasse, sobald sie jedoch drin ist, wird die 2. whileschleife nichtmal betreten.

weiß jemand, wo das problem liegt?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 13.10.2001, 18:09   #2
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard habs schon

aber ich denke, es ist sicherlich für andere auch interessant, die vorher nicht gewußte haben, daß in einem solchen fall der abfragepointer VOR DER 2. ABFRAGE auf die position 0 zurückgesetzt werden muß, um eine völlig neue abfrage zu starten und zwar mit:

mysql_data_seek($abfrage, 0);

passiert das nicht, geschieht die 2. abfrage anschließend an das ende der 1., d.h. der pointer fährt einfach noch weiter runter, findet nix (denn die 1. abfrage war ja deswegen zu ende, nach nix kommt wieder nix) und somit wird die 2. whileschleife auch niemals durchlaufen.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 13.10.2001, 18:53   #3
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Das Fetch holt die mit Select * from Tabelle gewünschten Datensätze heraus, ein sogenannter 'Cursor' zeigt jeweils auf den akutellen Datensatz. Wird ein Fetch abgesetzt kommt dieser Datensatz in die Datensatzvariablenfelder hinein. Zusätzlich wird der Cursor auf den nächsten Datensatz gestellt. Der Cursor ist also ein Datensatzzeiger. Ist die erste while Schleife erschöpft (keine weiteren Datensätze mehr vorhanden), ist es die zweite logischerweise auch, falls kein neuerlicher Select Befehl abgesetzt wird. Oder eben ein Seek. Bei beiden Befehlen bzw. im Zuge beider Befehle wird auch jeweils der Cursor auf den ersten passenden Datensatz gesetzt. Je nachdem ob über einen Index zugegriffen wird, sortiert wird, bzw. mittels 'WHERE' Bedingung eine Filter-Einschränkung angewendet wird, entscheidet sich, welcher Datensatz der erste ist und welche Datensätze qualifiziert sind. Der Datensatz, der als erster 'matcht', steht dann beim ersten Fetch-Aufruf bereit. Das ganze Schleifenspiel geht so lange bis der Cursor auf keinen qualifizierenden Datensatz gestellt werden kann und die while Bedingung wird zu FALSE. Deswegen also wenn eine weitere - SEPERATE - while Schleife notwendig ist, muß auch ein Select davor gemacht werden. Ist eigentlich logisch, denn ein Fetch ist ja kein Select.

mfg Kikakater
kikakater ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:17 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag