freak: Sqlite: Einträge zählen.

moin

mit der 1. source funktioniert das zählen:
$db = sqlite_open($database);
$result = sqlite_query($db, "SELECT * FROM $tabname WHERE (url='".$url."') ");
$anzahl=sqlite_num_fields($result);

mit dieser source jedoch nicht:
$db = new SQLiteDatabase($database);
$result = $db->query("SELECT * FROM $tabname");
$anzahl=sqlite_num_fields($result);

PHP meint, dass result im 2.fall ein objekt wäre und keine ressource.
wie kann ich das dementsprechend ausbessern?
denn alle meine script greifen über $db = new SQLiteDatabase($database); drauf zu unhd nicht über
$db = sqlite_open($database); !

danke für hilfe

  1. mit dieser source jedoch nicht:
    $db = new SQLiteDatabase($database);
    $result = $db->query("SELECT * FROM $tabname");
    $anzahl=sqlite_num_fields($result);

    Mit folgendem Ausdruck,
    :::  $db->query
    greift die Variable $db über einen Pointer, in diesme Fall "->" auf die Adresse des Werte "query...." zu.

    Versuch es mal mit "mysql_fecht_object"...!!!
    Beispiele findest du bei selfphp...

    1. Moin!

      mit dieser source jedoch nicht:
      $db = new SQLiteDatabase($database);
      $result = $db->query("SELECT * FROM $tabname");
      $anzahl=sqlite_num_fields($result);

      Mit folgendem Ausdruck,
      :::  $db->query
      greift die Variable $db über einen Pointer, in diesme Fall "->" auf die Adresse des Werte "query...." zu.

      Die "Variable" $db ist ein Objekt. Es wird eine Zeile zuvor erzeugt.

      "->" ist kein Pointer, sondern der ganz gewöhnliche "Operator", um Methoden und Eigenschaften von Objekten zu referenzieren.

      Es gibt auch keine "Adresse des Wertes "query". query ist eine Methode des Objektes $db, die hier aufgerufen wird.

      Versuch es mal mit "mysql_fecht_object"...!!!

      Es wird gar nicht MySQL verwendet, dementsprechend kann auch mysql_fetch_object nicht weiterhelfen. Es wird SQLite verwendet, das ist eine einfachere Datenbank, die in PHP 5 erstmals direkt mit dabei ist.

      Beispiele findest du bei selfphp...

      SelfPHP ist schlecht. Total unaktuell. Hat z.B. so wichtige Funktionen wie imagecreatetrruecolor noch nicht mit drin (Standard seit PHP 4.3.0, seitdem die gdlib 2 mit PHP geliefert wird - und auch schon vorher einsetzbar, wenn man diese Lib manuell dazuinstalliert hat). Und es kennt PHP 5 noch nicht, also auch kein SQLite.

      - Sven Rautenberg

      1. hallo Sven

        Die "Variable" $db ist ein Objekt. Es wird eine Zeile zuvor erzeugt.
        "->" ist kein Pointer, sondern der ganz gewöhnliche "Operator", um Methoden und Eigenschaften von Objekten zu referenzieren.
        Es gibt auch keine "Adresse des Wertes "query". query ist eine Methode des Objektes $db, die hier aufgerufen wird.

        hast Du evt nen lösungsvorschlage für mich?

        danke

        1. Moin!

          hallo Sven

          Die "Variable" $db ist ein Objekt. Es wird eine Zeile zuvor erzeugt.
          "->" ist kein Pointer, sondern der ganz gewöhnliche "Operator", um Methoden und Eigenschaften von Objekten zu referenzieren.
          Es gibt auch keine "Adresse des Wertes "query". query ist eine Methode des Objektes $db, die hier aufgerufen wird.
          hast Du evt nen lösungsvorschlage für mich?

          Du hast deine Kommandos verwechselt.

          Im ersten Beispiel ist $db das Ergebnis des Befehls "sqlite_open()"
          Im zweiten Beispiel ist $db das Ergebnis von "new SQLiteDatabase()"

          Deine zwei Beispiele unterscheiden sich in mehr als nur der Query!

          - Sven Rautenberg

          1. hab sie nicht verwechselt, sondern anders schreiben müssen,
            da ich es sonst nicht hinbekommen hätte, dass der das zählen kann.
            nun erhoffe ich mir mit Deiner hilfe, dass das 2. beispiel ohne große änderung; bzw lediglich mit einer änderung der letzten zeile auch klappt.

            1. Moin!

              hab sie nicht verwechselt, sondern anders schreiben müssen,

              Das kann ja gar nicht sein. Wenn der erste Weg geht, dann ist der erste Weg richtig. Sonst würde der zweite Weg ja auch gehen.

              da ich es sonst nicht hinbekommen hätte, dass der das zählen kann.

              Beim ersten Mal kann er zählen. Verwende den Code des ersten Beispiels mit der SQL-Abfrage des zweiten Beispiels, und es sollte funktionieren.

              nun erhoffe ich mir mit Deiner hilfe, dass das 2. beispiel ohne große änderung; bzw lediglich mit einer änderung der letzten zeile auch klappt.

              Du mußt den Code es ersten Beispieles nehmen. Was hindert dich?

              - Sven Rautenberg

              1. morgen !
                verdammt!!!!!!
                hab nun das erste beispiel genommen und mir eine funktion gebaut:
                function add_url($db,$url)
                {
                    $result = sqlite_query($db, "SELECT * FROM $tabname_todo WHERE (url='".$url."') ") or die("geht ned!<bR>");
                    $anzahl=sqlite_num_rows ($result);
                ...
                }

                so gern mich php auch mag, muss es mir "geht ned!" mitteilen.
                was passt jetzt wieder ned daran.
                Warning: sqlite_query() expects parameter 1 to be resource, string given in /...sqlite_add_todo.php on line 8
                dreck!

                wenn ich die selbe zeile außerhalb der funktion verwende, so wie es im 1. beispiel dieses threads zu sehen ist, dann gehts ja auch!
                warum dann hier nicht?

                wie würde es dann besser gehen?

                danke

                1. Moin!

                  hab nun das erste beispiel genommen und mir eine funktion gebaut:
                  function add_url($db,$url)
                  {
                      $result = sqlite_query($db, "SELECT * FROM $tabname_todo WHERE (url='".$url."') ") or die("geht ned!<bR>");
                      $anzahl=sqlite_num_rows ($result);
                  ...
                  }

                  wenn ich die selbe zeile außerhalb der funktion verwende, so wie es im 1. beispiel dieses threads zu sehen ist, dann gehts ja auch!
                  warum dann hier nicht?

                  Variablen-Scope!

                  Innerhalb einer Funktion sind keinerlei Variablen definiert, außer denjenigen, die als Parameter übergeben werden. Alle in der Funktion erstellten Variablen werden beim Verlassen der Funktion vergessen, außer man tut was dagegen.

                  - Sven Rautenberg