PHP 7.0.6 Released


(PHP 5 >= 5.3.0, PHP 7)

SQLite3::openOuvre une base de données SQLite


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

Ouvre une base de données SQLite 3. Si le cryptage a été inclu lors de la construction de la base de données, la clé correspondante sera utilisée.

Liste de paramètres


Chemin vers la base de données SQLite, ou :memory: pour utiliser la base de données se trouvant en mémoire vive.


Drapeaux optionnels à utiliser pour déterminer la manière d'ouverture de la base de données SQLite. Par défaut, ce sera SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.

  • SQLITE3_OPEN_READONLY : Ouvre la base de données en lecture seule.

  • SQLITE3_OPEN_READWRITE : Ouvre la base de données en lecture et écriture.

  • SQLITE3_OPEN_CREATE : Crée la base de données si elle n'existe pas.


La clé optionnelle de cryptage utilisée lors du cryptage/décryptage de la base de données SQLite.

Valeurs de retour

Aucune valeur n'est retournée.


Exemple #1 Exemple avec SQLite3::open()

 * Exemple simple qui étend la classe SQLite3 et change les paramètres
 * __construct, puis, utilise la méthode de connexion pour initialiser la
 * base de données.
class MyDB extends SQLite3

$db = new MyDB();

$db->exec('CREATE TABLE foo (bar STRING)');
$db->exec("INSERT INTO foo (bar) VALUES ('Ceci est un test')");

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

add a note add a note

User Contributed Notes 3 notes

kbrobst at surveyresearchpartners dot com
6 years ago
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 * 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".

//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;
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;
jjchailloux at yahoo dot com
5 years ago
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 on Mac OS
donnovan at ukr dot net
1 month ago
How to open MY db? I have a problem with it. Always I see:

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in ....

if I use mysql_connect().

How to use another method?
To Top