Seite 1 von 2

SQlite mit PhP

Verfasst: 15.10.2010 16:40
von Andreas21
Hi,

ich versuche eine in PB erstellte Sqlite Datenabnk untre PHP auszulesen.
Leider bekomme ich immer eine Fehlermeldung beim Öffnen der Datenbnak unter PHP.
Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database in test.php on line 2
Fehler beim Öffnen der DB: file is encrypted or is not a database

Code: Alles auswählen

<?php
    if (!$db = sqlite_open('sqlite.db', 0666, $err));
    {
      die("Fehler beim Öffnen der DB: $err");
    } else {
      $result = sqlite_query($db,'SELECT Name FROM mod');
      while($line = sqlite_fetch_array($result))
      {
        echo("Name: " . $line["Name"] . "<br>");
      }
    }
?>

Code: Alles auswählen

UseSQLiteDatabase()

CreateFile(0,"sqlite.db")
CloseFile(0)

OpenDatabase(0,"sqlite.db", "", "", #PB_Database_SQLite)

sql.s = "CREATE TABLE "
sql+    Chr(34)+"mod"+Chr(34)+" ("
sql+    Chr(34)+"Name"+Chr(34)+" TEXT PRIMARY KEY,"+Chr(34)+"zeit"+Chr(34)+" TEXT);"
DatabaseUpdate(0, sql)

For index = 0 To 100
  sql = "INSERT INTO "+Chr(34)+"mod"+Chr(34)+" VALUES ( "
  sql+  Chr(34)+Str(index)+Chr(34)+","+Chr(34)+Str(Date())+Chr(34)+");"
  DatabaseUpdate(0, sql)
Next

CloseDatabase(0)
Dast ist nur ein Test Code.
Die Datenbank ist mit Navicat Lite und PB lesbar.

Re: SQlite mit PhP

Verfasst: 15.10.2010 19:28
von bobobo
ein Begin vor und ein Commit nach der Schleife an die sqlitedb bei der Erstellung
macht das ganze etwas flötter (nicht unerheblich)

Code: Alles auswählen

....
DatabaseUpdate(0, "Begin")
For index = 0 To 100
  sql = "INSERT INTO "+Chr(34)+"mod"+Chr(34)+" VALUES ( "
  sql+  Chr(34)+Str(index)+Chr(34)+","+Chr(34)+Str(Date())+Chr(34)+");"
  DatabaseUpdate(0, sql)
Next
DatabaseUpdate(0, "Commit")
....
und dann ist da ein schreibfehler im php-dings drin .. das ; hinter der ersten zeile ..if (... muss da weg

ansonsten kann ich mit so einer sqlite.db mit php auch nix anfangen

liegt's vielleicht an der version ???
<?php
echo sqlite_libversion ();
?>
schmeisst bei mir was 2.8. arttiges raus
pb ist da aktueller denk ich

Re: SQlite mit PhP

Verfasst: 15.10.2010 20:10
von Andreas21
Thx für die Antwort.

Ich habe mein PHP auf 5.3 Updatet da wird dann Sqlite 3 unterstützt.

Code: Alles auswählen

<?php
    if (!$db = new SQLite3('sqlite.db'))
    {
      die("Fehler beim Öffnen der DB: $err");
    } else {
      $results = $db->query('SELECT Name FROM mod');
      while ($row = $results->fetchArray())
      {
        echo("Name: " . $row["Name"] . "<br>");
      }
    }
?>

Re: SQlite mit PhP

Verfasst: 15.10.2010 23:21
von Bisonte
Andreas21 hat geschrieben:Thx für die Antwort.

Ich habe mein PHP auf 5.3 Updatet da wird dann Sqlite 3 unterstützt.
Es geht ja nun nicht um die PHP Version, sondern um die installierte SQLite Version !
echo sqlite_libversion ();

Re: SQlite mit PhP

Verfasst: 16.10.2010 00:13
von Andreas21
Das war ja die 2.xxx

Die Version 3 ist bei php 5.3 standart erst mit bei.

Re: SQlite mit PhP

Verfasst: 16.10.2010 00:23
von Kiffi
@Andreas21: Aus Deinen letzten Postings wird nicht
klar, ob das Problem noch besteht. Wenn ja, dann
bitte mal testweise den kompletten Pfad (Adresse)
zur Datenbank bei $db = new SQLite3(...) angeben.

Grüße ... Kiffi

Re: SQlite mit PhP

Verfasst: 16.10.2010 00:26
von Andreas21
Das Problem ist mit den Update von PHP gelöst worden.
In der Version PHP 5.3.X ist SQLite 3 Standart mit bei.


SQlite datenbanken lauffen so Problemlos unter PHP.

Re: SQlite mit PhP

Verfasst: 25.11.2010 22:23
von John
Hi an alle,

dieses Thema möchte ich mal aufgreifen, weil mich das kürzlich beschäftigte.

Ich habs dann aber aus Zeitgründen nicht weiter verfolgt.

Also, habe ich das richtig verstanden, wenn ich z.B. mit PB 4.4x (z.B. Windows Version, aber sollte ja ansich egal sein, für welches Zielsystem, oder?) mit SQLite eine DB erstelle, dann kann ich diese DB (also die Datendatei die SQLite mir mit meinem PB Programm angelegt hat) auch mit PHP, also webbasiert (z.B. als Webanwendung im Browser) nutzen, also lesen, schreiben, usw.?

Bedeutet das z.B. auch, dass ich so eine lokal erstellte SQLite Datendatei - aus welchen Gründen auch immer - zum Webspace hochladen könnte, und dann dort webbasiert ebenfalls bearbeiten kann? Falls ja, kann ich sie dann auch wieder downloaden und nun wieder mit meinem lokalen PB Programm weiter bearbeiten?

???
Geht sowas?

Ich hab über dieses Thema mal mit dem Michael gesprochen (Nickname???), aber er wusste z. dem Zeitpunkt auch keine konkrete Antwort. Ist ja auch ziemlich speziell, oder? Er meinte, mit UNC könnte sowas evlt. auch gehen...

Danke für euer Feedback.

Re: SQlite mit PhP

Verfasst: 26.11.2010 00:01
von Andreas21
Ja das ist möglich.
Du soltest nur darauf achten das du SQlite 3 hast.
Was erst ab PHP Version 5.3.X ist.
Bei älteren PHP Versionen ist es Version 2.X
PB benutzt SQLite 3.
PB SQlite ist nicht kompatibel mit PHP Version < 5.3.X.

Re: SQlite mit PhP

Verfasst: 26.11.2010 10:35
von John
Hi Andreas,

danke dir.

Und was ist mit UNC (Universal Naming Convention)?

Wäre folgendes möglich, zumindest wenn die PHP Version passt?

=>

Webanwendung bearbeitet SQLite Datendatei (=Datenbank).

Gleichzeitig (oder ist es nicht gleichzeitig möglich? Falls nein, wie müsste man prüfen, ob die Webanwendung, bzw. die Web-DB die Datei bearbeitet?) soll (zumindest zeitweilig) ein lokales Programm, welches mit PB erstellt ist, und SQLite Funktionen hat, per "ganz normalem" PC und UNC auf die Web-DB (also die Datendatei) zugreifen.

(Ganz normaler PC = Windows, oder Linux, oder MacOS, eben das was mit PB realisierbar ist).

Geht das (wenn der PC Internetzugang hat)?

Falls ja, wie macht man das, worauf muss man achten, damit die DB (die Datendatei) nicht zerstört wird, oder kümmert sich die SQLite selber um sowas? Ich weiss nämlich grad nicht, ob SQLite mehrplatzfähig ist.

Ansonsten muss ich mal einwerfen; das Konzept von SQLite finde ich generell spitzenmässig, und ich finds auch klasse, das sowas in PB drin ist. Und ja, auch PB finde ich klasse, allerdings wünsche ich mir mehr visuelle Programmiermöglichkeiten, aber dafür gibts ja pureFORM (danke Gnozal :-).

Danke.