golil: gesamtanzahl der datensätze in einer tabelle

hallo mitanader,

hab ne mysql-tabelle, mit ner number spalte auf dem ein auto-increment liegt. nun möchte ich die anzahl der datensaätze in dieser tabelle herausfinden.

ist es besser mit

$abfrage='SELECT number FROM tabelle ORDER BY number DESC LIMIT 0,1'
  $ergebnis=mysql_query($abfrage);
  while($row=mysql_fetch_object($ergebnis)) {
    echo $number;
    }

oder mit

$abfrage='SELECT number FROM guestbook';
  $ergebnis=mysql_query($abfrage);
  echo mysql_num_rows($ergebnis);

dannge für eure antworten...

  1. Hallo,

    ueber die Abfrage der letzten Nummer erhaeltst du grundsaetzlich nicht zuverlaessig die Anzahl der Datensaetze, da beim loeschen eines Datensatzes die Nummer der folgenden unveraendert bleibt.

    Viele Grüße
    Patrick

    --
    "Though this be madness, yet there's method in't."
    sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
    1. dafür habe ich schon gesorgt!!!!
      Die letzte nummer is immer die anzahlt, habe alles dafür so ausgerichtet!!!

      also?

  2. yo,

    nun möchte ich die anzahl der datensaätze in dieser tabelle herausfinden.

    SELECT COUNT(*) from guestbook;

    Ilja

  3. echo $begrüßung;

    hab ne mysql-tabelle, mit ner number spalte auf dem ein auto-increment liegt. nun möchte ich die anzahl der datensaätze in dieser tabelle herausfinden.

    Die Anzahl der Datensätze liefert die Funktion COUNT(): SELECT COUNT(*) FROM ...

    $abfrage='SELECT number FROM tabelle ORDER BY number DESC LIMIT 0,1'

    Das ist nur die größte Nummer im Feld number. Das kann man auch mit MAX(number) ermitteln, was aber auch nicht der Anzahl der Datensätze entsprechen muss.

    $abfrage='SELECT number FROM guestbook';
      $ergebnis=mysql_query($abfrage);
      echo mysql_num_rows($ergebnis);

    Diese Form eigenet sich nur dann, wenn die Datensätze auch benötigt werden. Ein mysql_query() holt im Hintergrund alle Datensätze ab und speichert sie zwischen. Nebenbei weiß es nun auch noch, wieviele Datensätze die Abfrage ergeben hat und kann über mysql_num_rows() diese Anzahl liefern. Ohne diese Zwischenspeicherung könnte es die Anzahl nicht "sofort" wissen. Siehe: mysql_unbuffered_query(). Wenn du die Datensätze nicht benötigst, ist das eine unnötige Belastung des DBMS.

    echo "$verabschiedung $name";

    1. hey dange,

      von dem mysql_unbuffered_query hab ich noch nie gehört...aber verstehe auch nicht gnz, was es damit wirklich auf sich hat (sry mein english).

      also dieser unbuffered query ruft nicht erst alle daten ab, sondern man kann ihn schon verwenden, nachdem die ertsen daten geholt wurden. also kann ich ihn nicht für auslesen von mehreren datensätzen etc. verwenden, oder?

      1. echo $begrüßung;

        von dem mysql_unbuffered_query hab ich noch nie gehört...aber verstehe auch nicht gnz, was es damit wirklich auf sich hat (sry mein english).

        Das "normale" mysql_query() arbeitet die Anfrage ab und holt im Hintergrund bereits alle entstehenden Daten ab. Die mysql_fetch_*-Funktionen greifen dann auf diese vorabgeholten Daten zu.

        also dieser unbuffered query ruft nicht erst alle daten ab, sondern man kann ihn schon verwenden, nachdem die ertsen daten geholt wurden. also kann ich ihn nicht für auslesen von mehreren datensätzen etc. verwenden, oder?

        Die mysql_unbuffered_query() kehrt sofort nach Absetzen des Statements wieder zurück. Jeder Fetch-Aufruf holt den nächsten Datensatz direkt beim Server ab. Es gibt dabei ein paar Nachteile:

        • mysql_num_rows() funktioniert nicht.
        • Es müssen erst alle Datensäte geholt werden, bevor eine neue Anfrage gestartet werden kann. Man kann also nicht den Rest der Datensätze ignorieren.
        • Wahlfreier Zugriff auf die Ergebnismenge ist nicht möglich. Man kann nicht beliebig hin- und herspringen (mysql_data_seek()).

        echo "$verabschiedung $name";