Ankündigung

Einklappen
Keine Ankündigung bisher.

Anzahl der Zeilen / Datensätze in einer SQLite3-Datenbank ermitteln?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anzahl der Zeilen / Datensätze in einer SQLite3-Datenbank ermitteln?

    Hallo Leute,

    ich arbeite gerade an einem Mini-Projekt mit einer kleinen Datenbank, auf Basis von SQLite3.

    Mein Problem ist so wie der Titel schon anzeigt, möchte ich die Anzahl aller Datensätze bzw. Zeilen in meiner SQLit3-Datenbank ermitteln,
    ähnlich wie man das für Spalten mit numColumns() auch machen kann/konnte.

    Da ich nicht so erfahren bin, brauche ich eine kleine, einfache Lösung, d.h. ohne viele Codezeilen oder Bibliotheken usw...

    Hier ist der bisherige Code:

    PHP-Code:
    // Datenbankdatei öffnen bzw. erzeugen
    $db = new SQLite3("minikalender_sqlite.db");

    // Daten aus der Datenbankdatei abrufen
    $res $db->query("SELECT * FROM minikalender") or die ("DB-Verbindung nicht möglich: $db");

    // Anzahl aller Einträge in der DB ermitteln
    $num_columns = .... 
    Bei den Pünktchen sollten die Anweisungen zur Ermittlung der Datensatz-Anzahl stehen. Für eine Lösung oder Hinweise wäre sehr dankbar

  • #2
    mit count()
    siehe dazu https://www.sqlite.org/lang_aggfunc.html

    Kommentar


    • #3
      - zB: https://sqliteonline.com/#fiddle-588...eb8f2fc8263392

      - Bitte hier Code/PHP-Tags verwenden.

      - Ich würde dir übrigens PDO zum Verbinden auf die DB empfehlen.
      PHP-Code:
      $dsn 'sqlite:'.$dbFile;
      $user '';
      $pass '';
      $options = [
          
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
          
      PDO::ATTR_EMULATE_PREPARES => false
      ];
      $pdo = new PDO($dsn$user$pass$options); 
      Siehe auch hier: https://php-de.github.io/jumpto/pdo/


      - SELECT * ist pfui, zähle immer alle Felder auf, die du im Ergebnis haben willst.


      PHP-Code:
      ("DB-Verbindung nicht möglich: $db"); 
      - Warum verstümmelst du die Umlaute, das ist nicht nötig. Schreib ein ö. Zum Zeichensatz noch. Mach am besten alles gleich in UTF-8. https://php-de.github.io/jumpto/utf-8/ Damit ersparst du dir später sehr warscheinlich gröbere Probleme.


      [MOD: Verschoben von PHP-Einsteiger]
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Wenn du eh schon alle Datensätze gelesen hast (SELECT * ist übrigens Pfui) dann kannst du doch einfach die Göße des Array nehmen

        count($res);

        Allerdings ist es auch nicht Sinn einer Datenbank alle Datensätze zu lesen. Dann kannst du genauso gut eine XML Datei zum Speichern benutzen. Das dürfte sogar schneller sein.

        Gruß

        Claus
        Pre-Coffee-Posts sind mit Vorsicht zu geniessen!

        Kommentar


        • #5
          HTML-Code:
          "SELECT count() FROM minikalender"
          Gibt die Anzahl aller Datensätze zurück.

          Kommentar


          • #6
            Vielen Dank für die Rückmeldungen ! Ich probiere es mal mit count()

            Apropos SELECT : Mit welchem Befehl sollte man bei derlei SQL-Abfragen besser arbeiten?

            Kommentar


            • #7
              Mit SELECT natürlich, aber ohne den Stern dahinter, sondern du sollst immer alle Spalten dort aufzählen, die du auch ausgegeben haben willst.
              Das vermindert Fehlerquellen und der Code ist für alle leichter lesbar.

              Kommentar


              • #8
                Code:
                 SELECT count(*) AS Anzahl FROM minikalender
                Hier sollte der Stern benutzt werden.

                Kommentar


                • #9
                  Kann man bei Sqlite3 weglassen. Steht auch so in der Doku.
                  Bei anderen DBMS ist er hingegen notwendig.

                  Kommentar


                  • #10
                    Auch wenn der * bei SQLite3 für count() optional ist, würde ich die zu anderen DBMS kompatible Schreibweise vorziehen.

                    Kommentar


                    • #11
                      Ich habe gerade diese Eingabe ausprobiert:

                      $res = $db->query("SELECT count(*) AS anzahl FROM minikalender") or die ("DB-Verbindung nicht möglich: $db");

                      jspit: Jedoch läuft es so nicht. Wie soll ich das anzahl auswerten... als Array mit WHILE oder FOR EACH?

                      ****

                      Mein anderer Versuch klappt leider auch nicht:

                      $res = $db->query("SELECT * FROM minikalender") or die ("DB-Verbindung nicht möglich: $db");
                      $rows = count($res);

                      Da gibt er mir für $rows immer 1 aus, d.h. der mit count($res) gezählte Inhalt von $res

                      Kommentar


                      • #12
                        Wie soll ich das anzahl auswerten.
                        Naja wie man halt ein Resultset abfragt... Bitte schau dir die Grundlagen zu DB Abfragen nochmals ab. Da gibt es dann fetch und konsorten.
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar

                        Lädt...
                        X