sqlite_open

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

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

Beschreibung

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

Objektorientierter Stil (Konstruktor):

final public 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()

add a note add a note

User Contributed Notes 3 notes

up
4
Anonymous
18 years ago
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);
}
?>
up
0
Phillip Berndt
17 years ago
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)
up
-8
Simon
7 years ago
If you are using PHP7 or up, use PDO instead. this seems to be outdated since newer than 5.4
To Top