sqlite_open
(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)
sqlite_open — Открывает базу данных SQLite или создает ее, если она не существует
Описание
$filename
[, int $mode
= 0666
[, string &$error_message
]] )Объектно-ориентированный стиль (конструктор):
$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 и возвращает объект
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- SQLite
- sqlite_array_query
- sqlite_busy_timeout
- sqlite_changes
- sqlite_close
- sqlite_column
- sqlite_create_aggregate
- sqlite_create_function
- sqlite_current
- sqlite_error_string
- sqlite_escape_string
- sqlite_exec
- sqlite_factory
- sqlite_fetch_all
- sqlite_fetch_array
- sqlite_fetch_column_types
- sqlite_fetch_object
- sqlite_fetch_single
- sqlite_fetch_string
- sqlite_field_name
- sqlite_has_more
- sqlite_has_prev
- sqlite_key
- sqlite_last_error
- sqlite_last_insert_rowid
- sqlite_libencoding
- sqlite_libversion
- sqlite_next
- sqlite_num_fields
- sqlite_num_rows
- sqlite_open
- sqlite_popen
- sqlite_prev
- sqlite_query
- sqlite_rewind
- sqlite_seek
- sqlite_single_query
- sqlite_udf_decode_binary
- sqlite_udf_encode_binary
- sqlite_unbuffered_query
- sqlite_valid
Коментарии
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);
}
?>
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)
If you are using PHP7 or up, use PDO instead. this seems to be outdated since newer than 5.4