ScotlandPHP

sqlite_open

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

sqlite_openОткрывает базу данных SQLite или создает ее, если она не существует

Описание

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

Объектно-ориентированный стиль (конструктор):

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

Открывает базу данных SQLite или создает ее, если она не существует.

Список параметров

filename

Имя файла базы данных SQLite. Если файл не существует, SQLite попытается создать его. PHP должен владеть правами записи на файл в случае вставки данных, изменения схемы базы данных или создания файла с базой данных, если он не существует.

mode

Режим прав доступа на файл. Предназначается для открытия базы данных в режиме только для чтения, однако в настоящее время этот аргумент не используется библиотекой sqlite. Значением по умолчанию (и рекомендуемым к использованию) является восьмеричное 0666.

error_message

Передается по ссылке и устанавливается в читабельное сообщение об ошибке, объясняющее почему не удалось открыть базу данных, в случае возникновения таковой ошибки.

Возвращаемые значения

Возвращает ресурс (идентификатор базы данных) при успешном завершении, FALSE при возникновении ошибки.

Примеры

Пример #1 Пример использования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);
}
?>

Примечания

Подсказка

На платформах Unix, SQLite может работать некорректно в программах, использующих вызов fork(). В таких программах рекомендуется закрывать базу данных перед запуском дочернего процесса и затем заново открывать ее в дочернем и/или родительском процессе. Дополнительная информация о проблеме содержится в » описании интерфейса SQLite на языке C в разделе "Multi-Threading And SQLite".

Подсказка

Не рекомендуется работать с базами данных SQLite, смонтированных на NFS разделах. Общеизвестна плохая реализация блокировок в NFS, поэтому вам может даже не удастся открыть базу данных вообще, а если все-таки это произойдет, то поведение данной блокировки будет неопределенным.

Замечание: Начиная с SQLite версии 2.8.2, можно указывать :memory: в качестве значения аргумента filename для создания базы данных в памяти. Это может быть полезно в тех случаях, когда необходимо создание временной базы данных, которая должна быть уничтожена при завершении процесса. Также это может использоваться совместно с командой ATTACH DATABASE для загрузки других баз данных и выполнения операций с ними.

Замечание: Модуль SQLite учитывает опции безопасный режим и open_basedir.

Смотрите также

  • sqlite_popen() - Открывает постоянное подключение к базе данных SQLite или создает ее, если она не существует
  • sqlite_close() - Закрывает открытую базу данных SQLite
  • sqlite_factory() - Открывает базу данных SQLite и возвращает объект

add a note add a note

User Contributed Notes 3 notes

up
4
Anonymous
10 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
-1
Phillip Berndt
10 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
-2
Simon
7 months ago
If you are using PHP7 or up, use PDO instead. this seems to be outdated since newer than 5.4
To Top