PHP Doku:: Öffnet eine SQlite Datenbank - sqlite3.open.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDatenbankerweiterungenAnbieterspezifische DatenbankerweiterungenSQLite3Die SQLite3-KlasseSQLite3::open

Ein Service von Reinhard Neidl - Webprogrammierung.

Die SQLite3-Klasse

<<SQLite3::loadExtension

SQLite3::prepare>>

SQLite3::open

(PHP 5 >= 5.3.0)

SQLite3::openÖffnet eine SQlite Datenbank

Beschreibung

public bool SQLite3::open ( string $filename [, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE [, string $encryption_key ]] )

Öffnet eine SQLite 3 Datenbank. Sollte diese verschlüsselt sein, wird unter Anwendung des Schlüssels versucht, diese zu entschlüsseln

Parameter-Liste

filename

Pfad zu der SQLite Datenbank.

flags

Optionale Parameter zur Bestimmung, wie die SQLite Datenbank geöffnet werden soll. Im Normalfall wird open SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE nutzen.

  • SQLITE3_OPEN_READONLY: Öffnet die Datenbank ausschließlich für lesende Zugriffe.

  • SQLITE3_OPEN_READWRITE: Öffnet die Datenbank für lesende und schreibende Zugriffe.

  • SQLITE3_OPEN_CREATE: Erzeugt eine Datenbank, wenn diese nicht existiert.

encryption_key

Ein optionaler Schlüssel zur Verschlüsselung der Datenbank. Dieser wird zum Ent- unf Verschlüsseln einer SQLite Datenbank genutzt.

Rückgabewerte

Gibt TRUE zurück, wenn die Datenbank erfolgreich geöffnet wurde, sonst FALSE.

Beispiele

Beispiel #1 SQLite3::open() example

<?php
/**
 * Ein einfaches Beispiel, wie man die SQLite3-Klasse erweitert, die Parameter
 * des Konstruktors (__construct) verändert und mit Hilfe der open-Methode dann
 * die Datenbank initialisiert.
 */
class MyDB extends SQLite3
{
    function 
__construct()
    {
        
$this->open('mysqlitedb.db');
    }
}

$db = new MyDB();

$db->exec('CREATE TABLE foo (bar STRING)');
$db->exec("INSERT INTO foo (bar) VALUES ('This is a test')");

$result $db->query('SELECT bar FROM foo');
var_dump($result->fetchArray());
?>


3 BenutzerBeiträge:
- Beiträge aktualisieren...
jjchailloux at yahoo dot com
6.07.2010 16:09
PHP Fatal error:  Class 'SQLite3' not found ...

you are probably running an old version of PHP

PHP 5.2 does not know about SQLite3; only SQLite (v2)

install PHP 5.3
http://www.macupdate.com/info.php/id/7294/php on Mac OS
cr at caltel dot com
5.05.2010 23:49
If you are getting:
  PHP Fatal error:  Class 'SQLite3' not found ...

Try:
  $db = new PDO('sqlite:mysqlitedb.db');

I assume there must be a "better" way, but I don't know it.
kbrobst at surveyresearchpartners dot com
7.03.2010 21:54
If you are trying to use the open() method to open multiple database files within the same SQLite3 object (which I could not get to work), here is an alternative way to do so using special SQLite3 syntax additions to the SQL language.  This took some investigation on my part, so hopefully the solution I found will help you too.

These are the nice features within SQLite3 that are leveraged:
* The create statement query for a table is stored within a table called "sqlite_master" within the parent database file.
* SQLite3 supports the "insert into...select * from" SQL syntax for doing bulkload-speed inserts into a table - but what if the source and target tables are in separate database files?
* SQLite3 has an "attach [filename] as [reference database name]" which will allow multiple database files to be opened and accessible to the same SQLite3 object.

Assume you have a table called "my_template" in the SQLite3 database file "source.db".  You want to make a copy of this table into the database file "target.db" and call the table "working_table".

<?php
//attach the source database file to the bulkload connection object;
$bulkload_connection = new SQLite3("c:/sqlite3_database_files/source.db");

//retrieve the create statement query for the source table;
$sourcetbl_create_statement = $bulkload_connection->querySingle("select sql from sqlite_master where type='table' and name='my_template'");
if (
$sourcetbl_create_statement===false) exit($bulkload_connection->lastErrorMsg());

//build the create statement query for the target table;
$targettbl_create_statement = str_replace('CREATE TABLE my_template', 'CREATE TABLE bulkload.working_table', $sourcetbl_create_statement);

//attach the target database file to the bulkload connection object - and reference it as the database called [bulkload];
$result=$bulkload_connection->exec("attach 'c:/sqlite3_database_files/target.db' as bulkload");
if (
$result===false) exit($bulkload_connection->lastErrorMsg());

//issue the query to create the target table within the target database file;
$result=$bulkload_connection->exec($targettbl_create_statement);
if (
$result===false) exit($bulkload_connection->lastErrorMsg());

//copy the rows from the source table to the target table as quickly as possible;
$result=$bulkload_connection->exec("insert into bulkload.working_table select * from my_template");
if (
$result===false) exit($bulkload_connection->lastErrorMsg());

//release the OS file locks on the attached database files;
$bulkload_connection->close();
unset(
$bulkload_connection);
?>



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",...)