Fonk: Result resource resetten

Hi,

was mich schon seit längerem beschäftigt: Wenn ich angenommen mit folgender Funktion eine eine result resource auslese

for ($i = 0; $i < $num ; $i++)
{
 $row = mysql_fetch_array($result);
 echo "<option value="$row[m_id]">$row[punkt]</option>";
}

ich aber an einer anderen Stelle nochmal die gleiche auslesen möchte gibt er keine Werte zurück - vermutlich weil der pointer am ende steht... die Frage ist nun ob ich den Pointer irgendwie wieder zurückstellen kann (wie z.B. reset($array) bei arrays...) ohne die ressource erneut aus der Datenbank lesen zu müssen.

Besten Dank im vorraus,
 der Fonk

  1. Hi,

    was mich schon seit längerem beschäftigt: Wenn ich angenommen mit folgender Funktion eine eine result resource auslese

    for ($i = 0; $i < $num ; $i++)
    {
    $row = mysql_fetch_array($result);
    echo "<option value="$row[m_id]">$row[punkt]</option>";
    }

    Das geht ganz einfach, du kannst ja die Werte der SQL-Abfrage in einem (notfalls auch mehrdimensionalen) Array speichern . Auf dieses Array kannst du jederzeit dann im ganzen Modul zugreifen.

    Ein reset ist demnach überflüssig.

    Grüße,

    Wolfram

    1. Moin!

      for ($i = 0; $i < $num ; $i++)
      {
      $row = mysql_fetch_array($result);
      echo "<option value="$row[m_id]">$row[punkt]</option>";
      }

      Das geht ganz einfach, du kannst ja die Werte der SQL-Abfrage in einem (notfalls auch mehrdimensionalen) Array speichern . Auf dieses Array kannst du jederzeit dann im ganzen Modul zugreifen.

      Ein reset ist demnach überflüssig.

      Die MySQL-Abfrage wird von PHP gepuffert - deshalb gibts sowohl mysql_unbuffered_query() als auch mysql_free_result().

      Aus demselben Grund gibts mysql_data_seek(), um im gepufferten Ergebnis den Lesezeiger, der von mysql_fetch_array() bei jedem Aufruf weiter nach hinten gesetzt wird, wieder an den Anfang oder sonstwohin zu platzieren.

      Ein Array ist demnach überflüssig, sondern kostet im Gegenteil nur doppelten Speicher.

      - Sven Rautenberg

      --
      "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
      (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
      1. Hello,

        Ein Array ist demnach überflüssig, sondern kostet im Gegenteil nur doppelten Speicher.

        Genau!
        Was mich aber mal wieder auf eine Frage bringt - sollte ich sie noch nicht gestellt haben...

        Wie groß ist denn der Speicher, den MySQL pro Query oder pro Connechtion zur Verfügung stellt? Auf jeden Fall wohl größer als 8MB, aber irgendwann fängt das Ding an zu swapen...

        Wo steht das?

        Grüße

        Tom

        1. Moin!

          Wie groß ist denn der Speicher, den MySQL pro Query oder pro Connechtion zur Verfügung stellt? Auf jeden Fall wohl größer als 8MB, aber irgendwann fängt das Ding an zu swapen...

          In meiner Unwissenheit würde ich sagen: Es gibt keine Begrenzung, außer der, den die Hardwareausstattung und das OS setzen.

          Wo steht das?

          Im Sourcecode?

          - Sven Rautenberg

          --
          "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
          (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
          1. Hello,

            Wie groß ist denn der Speicher, den MySQL pro Query oder pro Connechtion zur Verfügung stellt? Auf jeden Fall wohl größer als 8MB, aber irgendwann fängt das Ding an zu swapen...

            In meiner Unwissenheit würde ich sagen: Es gibt keine Begrenzung, außer der, den die Hardwareausstattung und das OS setzen.

            Wo steht das?

            Im Sourcecode?

            Mmmh. Könnte ja auch in einer my.ini oder so ähnlich stehen. Komme ich aber leider im Moment nicht ran.

            Grüße

            Tom