dedlfix: mysql_fetch_: Letzte Position erkennen

Beitrag lesen

Tach!

Es gibt keine Positionsangabe in der Ergebnismenge.

Doch! Ich kann doch mit data_seek eine bestimmte Position ansteuern und ab da weiterlesen.

mySQL kennt also ihren Pointer im result genau. Aber verrät ihn nicht?

Nicht MySQL kennt die Zahl. Du musst dazu wissen, dass PHP bereits mit der mysql_query()-Funktion die Ergebnismenge zum Client holt. Ein Fetchen greift nur noch auf die bereits abgeholte Menge zu und macht nicht jedes Mal ein Daten-Holen vom Server. Nur so ist es möglich, zum Beispiel sofort ein mysql_num_rows() ausführen zu können, weil der Client bereits die Menge der Datensätze kennt. Ohne dieses Hintergrund-Fetchen wäre die Anzahl erst nach vollständigem Fetchen bekannt.

Wenn du vorwärts und rückwärts blättern möchtest, nimm LIMIT und FOUND_ROWS() nebst SQL_CALC_FOUND_ROWS. Das ist die übliche Vorgehensweise, wenn zwischenzeitliche Änderungen am Datenbestand keine Berücksichtigung finden sollen. Man muss dabei auch nicht mitzählen, wieviele Datensätze man schon gefetcht/angezeigt hat. Das geht auch ohne und ist relativ einfache Mathematik. Sowas ist seit langem bekannt und Tutorials dazu gibt es garantiert.

dedlfix.