Kai: (mySQL) Gefundene Datensätze zählen

Hallo ihr,

wenn ich eine Abfrage habe, wie etwa diese hier:

$abfrage = "SELECT * FROM irgendwas WHERE x = '$var1'";

Wie kann ich dann die zutreffenden Ergebnisse zählen lassen und mir diese Zahl in eine Variable speichern? Ich war der Meinung, count() wäre dafür richtig, aber wie wende ich das an?

Danke schonmal.

LG Kai

  1. Hallo Kai,

    $abfrage = "SELECT * FROM irgendwas WHERE x = '$var1'";
    Wie kann ich dann die zutreffenden Ergebnisse zählen lassen und mir diese Zahl in eine Variable speichern?

    Mit Hilfe von mysql_num_rows().

    Grüße aus Nürnberg
    Tobias

  2. $abfrage = "SELECT * FROM irgendwas WHERE x = '$var1'";

    Wie kann ich dann die zutreffenden Ergebnisse zählen lassen und mir diese Zahl in eine Variable speichern? Ich war der Meinung, count() wäre dafür richtig, aber wie wende ich das an?

    $abfrage = mysql_query("SELECT * FROM irgendwas WHERE x = '$var1'");

    $anzahl = mysql_num_rows($abfrage);

    Gruss,
    Ben

  3. echo $begrüßung;

    $abfrage = "SELECT * FROM irgendwas WHERE x = '$var1'";

    Wie kann ich dann die zutreffenden Ergebnisse zählen lassen und mir diese Zahl in eine Variable speichern? Ich war der Meinung, count() wäre dafür richtig, aber wie wende ich das an?

    Wenn du nur die Anzahl brauchst, dann mit SELECT COUNT(*) FROM ...
    Das Ergebnis fragst du im Prinzip wie jedes andere MySQL-Ergebnis auch ab. Das Ergebnis ist ein Datensatz bestehend aus einer Spalte. Dieser kannst du mittels AS auch einen Namen geben: SELECT COUNT(*) AS anzahl FROM ...

    Wenn du nicht nur die Zahl sondern auch noch die Datensätzt selbst benötigst, dann liefert mysql_num_rows() die Anzahl der Datensätze.

    Die Methode SELECT * FROM ... und dann nur mysql_num_rows() abfragen ist zwar für den Programmierer bequemer aber für MySQL und PHP mit mehr Arbeit verbunden, weil damit von PHP erstmal auch unnötigerweise sämtliche Ergebnis-Datensätze abgefragt und zwischengepuffert werden.

    echo "$verabschiedung $name";

  4. Hallo Kai,

    Wie kann ich dann die zutreffenden Ergebnisse zählen lassen und mir diese Zahl in eine Variable speichern? Ich war der Meinung, count() wäre dafür richtig, aber wie wende ich das an?

    Ergänzend zu dem was dazu schon geschriebenen wurde gibt natürlich auch noch die Alternative

    $abfrage = "SELECT *, COUNT(*) as anzahl FROM irgendwas WHERE x = '$var1'";
                          ^^^^^^^^^^^^^^^^^^

    Diese Möglichkeit ist zumindest bei grossen Tabellen erheblich schneller als mysql_num_rows($abfrage).

    Zugreifen kannst Du auf den Wert von 'anzahl' genauso wie Du es bei "normalen" Spalten auch machen würdest.

    Grüsse
    Frankie

    1. hi,

      Ergänzend zu dem was dazu schon geschriebenen wurde gibt natürlich auch noch die Alternative

      $abfrage = "SELECT *, COUNT(*) as anzahl FROM irgendwas WHERE x = '$var1'";

      #1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Hallo wahsaga,

        $abfrage = "SELECT *, COUNT(*) as anzahl FROM irgendwas WHERE x = '$var1'";

        #1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

        oh, ja, danke, da war noch ein *, zu viel drin ;-(

        $abfrage = "SELECT COUNT(*) as anzahl FROM irgendwas WHERE x = '$var1'";

        muß es richtig lauten.

        Grüsse
        Frankie