PHP 5.6.0 released

sqlite_open

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

sqlite_openApre un database SQLite e crea il database se non esiste

Descrizione

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

Stile orientato agli oggetti (costruttore):

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

Apre un database SQLite o lo crea se non esiste.

Elenco dei parametri

filename

Nome del database SQLite. Se il file non esiste, SQLite tenterà di crearlo. Il PHP deve avere i permessi di scrittura sul file se si desidera inserire dei dati o modificare lo schema del database, o creare il database se non esiste.

mode

Specifica la modalità del file. E' inteso per essere utilizzato per l'apertura del file in modalità read-only. Attualmente questo parametro viene ignorato da SQLite. Per default la modalità di apertura è il valore ottale 0666, ed è questa l'impostazione raccomandata.

error_message

Passato per riferimento, è impostato per contenere un messaggio descrittivo di errore che spiega perché non si riesce ad aprire il database a causa di un errore.

Valori restituiti

Restituisce una risorsa (database handle) se ha successo, oppure FALSE se si verifica un errore.

Esempi

Example #1 Esempio di uso di sqlite_open()

<?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);
}
?>

Note

Suggerimento

Sui sistemi Unix, SQLite è sensibile agli script che utilizzano la chiamata di sistema fork(). Se si sta utilizzando un tale script, si raccomanda di chiudere la connessione prima dell'esecuzione del fork, e quindi ri-aprirlo nel processo figlio/padre. Per maggiori informazioni su questo problema vedere » L'interfaccia del linguaggio C alla libreria SQLite nella sezione intitolata Multi-Threading e SQLite.

Suggerimento

Si raccomanda di non utilizzare database SQLite su partizioni montate via NFS. Poiché è noto che NFS non è affidabile con i lock, può capitare che non si riesca neppure ad aprire il database, o, se ci si riesce, il comportamento dei lock può essere indefinito.

Nota: A partire dalla versione 2.8.2 della libreria SQLite, si può specificare :memory: come valore per il parametro filename in modo da creare database che risiedano soltanto nella memoria del computer. Principalmente questo è utile per le elaborazioni temporanee, poiché il database in memoria sarà distrutto non appena il processo termina. Può anche essere utilizzato in coppia con l'istruzione SQL ATTACH DATABASE per caricare altri database in modo da potere muovere e interrogare i dati tra di loro.

Nota: SQLite è sensibile alla modalità sicura e a open_basedir.

Vedere anche:

  • sqlite_popen() - Apre una connessione persistente ad un database SQLite e crea il database se non esiste
  • sqlite_close() - Chiude un database SQLite
  • sqlite_factory() - Apre un database SQLite e restituisce un oggetto SQLiteDatabase

add a note add a note

User Contributed Notes 3 notes

up
5
Anonymous
7 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
7 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
-3
koalay at gmail dot com
2 years ago
This function only support database of SQLite 2 or below. For SQLite 3, you must use PDO.
To Top