PHP Doku:: Öffnet eine SQLite-Datenbank und erzeugt die Datenbank, wenn diese nicht existiert. - function.sqlite-open.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDatenbankerweiterungenAnbieterspezifische DatenbankerweiterungenSQLiteSQLite Funktionensqlite_open

Ein Service von Reinhard Neidl - Webprogrammierung.

SQLite Funktionen

<<sqlite_num_rows -- SQLiteResult->numRows

sqlite_popen>>

sqlite_open

(PHP 5, PECL sqlite >= 1.0.0)

sqlite_open Öffnet eine SQLite-Datenbank und erzeugt die Datenbank, wenn diese nicht existiert.

Beschreibung

resource sqlite_open ( string $filename [, int $mode = 0666 [, string &$error_message ]] )

Objektorientierter Stil (constructor):

SQLiteDatabase::__construct ( string $filename [, int $mode = 0666 [, string &$error_message ]] )

Öffnet eine SQLite-Datenbank. Wenn die Datenbank nicht existiert, wird sie erzeugt.

Parameter-Liste

filename

Dateiname der SQLite-Datenbank. Es handelt sich dabei entweder um einen relativen, oder einen absoluten Pfad zu der Datei, in der SQLite die Daten speichern wird. Wenn die Datei noch nicht existiert, wird SQlite versuchen, sie zu erzeugen. Sie MÜSSEN Schreibrechte auf die Datei haben, wenn Sie Daten in die Datenbank eintragen oder die Datenbank ändern wollen.

mode

Modus der Datei. Dieser sollte genutzt werden, wenn die Datenbank nur Lesezugriff erlauben soll. Zur Zeit wird dieser Parameter von der SQLite-Bibliothek ignoriert. Der Standardwert für Modus ist der oktale Wert 0666. Es handelt sich dabei um den empfohlenen Wert, wenn der Parameter error_message genutzt werden soll.

error_message

Wird als Referenz übergeben und wird im Fehlerfall eine aussagekräftige Fehlermeldung enthalten. Diese wird erklären, warum die Datenbank nicht geöffnet werden konnte.

Rückgabewerte

Liefert eine Ressource (Datenbankverbindung) nach erfolgreichem Verbindungsaufbau. Ist ein Fehler aufgetreten wird FALSE zurückgegeben.

Beispiele

Beispiel #1 sqlite_open()-Beispiel

<?php
if ($db sqlite_open('mysqlitedb'0666$sqliteerror)) { 
    
sqlite_query($db'CREATE TABLE foo (bar varchar(10))');
    
sqlite_query($db"INSERT INTO foo VALUES ('fnord')");
    
$result sqlite_query($db'select bar from foo');
    
var_dump(sqlite_fetch_array($result)); 
} else {
    die(
$sqliteerror);
}
?>

Anmerkungen

Tipp

In Unix-Umgebungen reagiert SQLite auf Skripte, die den Systembefehl fork() nutzen. Sollten Sie ein solches Skript einsetzen, ist es ratsam bestehende Datenbankverbindungen zu beenden, anschließend den Fork ausführen, um dann die Verbindung entweder in einem Kind- oder dem Eltern-Prozess wieder herzustellen. Mehr Informationen zu diesem Thema finden Sie unter » Die C Sprachenschnittstelle zur SQLite-Bibliothek in dem Kapitel names Multi-Threading And SQLite.

Tipp

Es ist nicht empfehlenswert mit SQLite-Datenbanken zu arbeiten, die auf einer via NFS verbundenen Partition gespeichert sind. NFS neigt notorisch zu einem unvorhersehbarem Verhalten, wenn Dateien exklusiv gegen den Zugriff durch Dritte gesperrt werden. Dabei kann es sein, dass entweder eine Datenbankverbindung gar nicht zustande kommt, oder das Sperrverhalten undefiniert ist.

Hinweis: Seit der SQLite-Bibliothek in der Version 2.8.2, ist es möglich :memory: als filename anzugeben. Die erzeugte Datenbank wird dann ausschließlich im Speicher des Computers erzeugt und verwaltet. Dies ist nützlich bei der temporären Datenverarbeitung, da die Datenbank mit Prozessende zerstört wird. Eine solche Datenbank ist ebenfals nützlich, wenn sie in Verbindung mit dem ATTACH DATABASE SQL-Befehl andere Datenbanken einbindet, um Daten zwischen diesen auszutauschen und abzufragen.

Hinweis: SQLite berücksichtigt Safe Mode und open_basedir.

Siehe auch

  • sqlite_popen() - Öffnet eine persistente Verbindung zu einer SQLite-Datenbank und erzeugt diese im Bedarfsfall
  • sqlite_close() - Schließt eine SQLite-Datenbankverbindung
  • sqlite_factory() - Öffnet eine SQLite-Datenbank und gibt ein SQLiteDatabase-Objekt zurück


4 BenutzerBeiträge:
- Beiträge aktualisieren...
simplersolution at gmail dot com
7.12.2007 3:46
I found that both the file and the directory it is in have to be writeable by the web server, or an ambiguous "unable to open database file" error appears (pecl 1.0.3).  I pulled my hair out for ages before I realised that.
Phillip Berndt
2.03.2007 15:52
If you miss to set the permissions mentioned by ivoras Sqlite will drop an error message saying "Malformed database scheme", which is somehow misleading.

(I mentioned this as some [I did] might search php.net for this error message)

15.11.2006 11:45
the above example dows not! work since sqlite_query() does not accept one argument, but only 2.

so correct is:

<?php
if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
 
sqlite_query($db,'CREATE TABLE foo (bar varchar(10))');
 
sqlite_query($db,"INSERT INTO foo VALUES ('fnord')");
 
$result = sqlite_query($db,'select bar from foo');
 
var_dump(sqlite_fetch_array($result));
} else {
  die (
$sqliteerror);
}
?>
ivoras at fer dot hr
26.05.2004 19:46
Since sqlite uses a journal to do updates and inserts (and creates it on the fly), you ALSO must have write permissions set for the web server to write in the same DIRECTORY as the database file.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)