Что такое php sqlite3

Основы использования SQLite3 в PHP

В этой статье рассмотрим основы SQLite3 для PHP — полезной библиотеки (расширение для PHP), написанной на языке C, которая осуществляет механизм работы с данными с помощью SQL. Фактически, это безтиповая база данных, которая содержится всего в одном файле, который в свою очередь находится в самом проекте (в его файловой системе). Технически в этой базе всё — строки. Мы указываем тип данных для самой библиотеки, чтобы она сама «разруливала» сортировку по числовым полям.

Преимущества и ограничения

  • Полностью бесплатна
  • Нет необходимости в средствах администрирования
  • Высокая производительность и легкая переносимость
  • Поддержка процедурного и объектно-ориентированного интерфейсов
  • Хранение больших объемов данных
  • Хранение строк и бинарных данных неограниченной длины
  • Предназначена для небольших и средних приложений
  • Основной выигрыш в производительности, если преобладают операции вставки и выборки данных
  • При чрезвычайно активном обращении к данным, или в случае частых сортировок, SQLite работает медленнее своих конкурентов

Поддержка SQLite3 в PHP

  • ВPHP 5.0 поддержка SQLite версии 2 была встроена в ядро
  • Начиная с PHP 5.1 поддержка SQLite вынесена за пределы ядра php_sqlite
  • В PHP 5.3 добавлена поддержка SQLite версии 3 php_sqlite3
  • В PHP 5.4 поддержка SQLite версии 2 удалена php_sqlite

Особенности SQLite3

CREATE TABLE users(id INTEGER, name TEXT, age INTEGER)
CREATE TABLE users(id, name, age)

Для задания первичного ключа

id INTEGER PRIMARY KEY id INTEGER PRIMARY KEY AUTOINCREMENT

Экранирование строк через двойной апостроф

Создание, открытие и закрытие базы данных

//Создаём или открываем базу данных test.db $db = new SQLite3("test.db"); //Закрываем базу данных без удаления объекта $db->close(); //Открываем другую базу данных для работы $db->open("another.db"); //Удаляем объект unset($db);

Выполнение запроса

//Экранирование строк $name = $db->escapeString($name); //Для запросов без выборки данных $sql = "INSERT INTO users (name, age) VALUES ('$name', 25)"; //Возвращает значение булева типа $result = $db->exec($sql); //Количество изменённых записей echo $db->changes(); //Отслеживание ошибок echo $db->lastErrorCode(); echo $db->lastErrorMsg();

Подготовленные запросы

$sql = "INSERT INTO users (name, age) VALUES (:name, :age)"; //Готовим запрос $stmt = $db->prepare($sql); //Привязываем параметры $stmt->bindParam(':name',$name); $stmt->bindParam(':age',$age); //Исполняем запрос $result = $stmt->execute(); //Закрываем при необходимости $stmt->close();

Выборка данных

$sql = "SELECT name, age FROM users"; // В случае неудачи возвращает false $result = $db->querySingle($sql); //В $result - значение первого поля первой записи $result = $db->querySingle($sql, true); // В $result - массив значений первой записи // Стандартная выборка $result = $db->query($sql); // Обработка выборки $row = $result->fetchArray(); // SQLITE3_BOTH // Получаем ассоциативный массив $row = $result->fetchArray(SQLITE3_ASSOC); // Получаем индексированный массив $row = $result->fetchArray(SQLITE3_NUM);

Sqliteman — инструмент администрирования БД Sqlite

Предлагаю присмотреться к очень полезному инструменту для Sqlite3. Это аналог привычного phpmyadmin для MySql. Программа имеет неплохой графический интерфейс на русском языке, является портативной и не требует установки на ПК. Скачать Sqliteman можно по этой ссылке.

Читайте также:  Python flask web site

Ещё один популярный менеджер баз данных Sqlite — SQLiteStudio

Источник

SQLite3

To enable CURL and SQLITE3 on Windows with PHP 7.4 edit httpd.conf and php.ini as below:

# load php.ini from chosen directory
PHPIniDir «$/php»
# load PHP 7.4 on Windows
LoadModule php7_module «$/php/php7apache2_4.dll»
# load CURL on Windows
LoadFile «$/php/libssh2.dll»
# load SQLITE3 on Windows
LoadFile «$/php/libsqlite3.dll»

Now CURL and SQLITE3 are enabled and working fine on Windows on PHP 7.4.

As of PHP 5.4 support for Sqlite2 has been removed. I have a large web app that was built with sqlite2 as the database backend and thus it exploded when I updated PHP. If you’re in a similar situation I’ve written a few wrapper functions that will allow your app to work whilst you convert the code to sqlite3.

Firstly convert your DB to an sqlite3 db.

sqlite OLD.DB .dump | sqlite3 NEW.DB

Then add the following functions to your app:

function sqlite_open ( $location , $mode )
<
$handle = new SQLite3 ( $location );
return $handle ;
>
function sqlite_query ( $dbhandle , $query )
<
$array [ ‘dbhandle’ ] = $dbhandle ;
$array [ ‘query’ ] = $query ;
$result = $dbhandle -> query ( $query );
return $result ;
>
function sqlite_fetch_array (& $result , $type )
<
#Get Columns
$i = 0 ;
while ( $result -> columnName ( $i ))
<
$columns [ ] = $result -> columnName ( $i );
$i ++;
>

$resx = $result -> fetchArray ( SQLITE3_ASSOC );
return $resx ;
>
?>

They’re not perfect by any stretch but they seem to be working ok as a temporary measure while I convert the site.
Hope that helps someone

PHP doesn’t seem to support password protection for SQLite3. We can specify password on the db(I think) but you will still be able to open the DB without using a password so it is not working.

Читайте также:  Add field to object javascript

PHP 5.3.3 introduced sqlite3::busyTimeout(int milliseconds) which does not currently seem to be documented.

It believe it acts like sqlite::busyTimeout — that is it tells sqlite3 to call an internal busyHandler if SQLITE_BUSY is returned from any call which waits a short period and then retries. It continues to do this until milliseconds milliseconds have elapsed and then returns the SQLITE_BUSY status.

I don’t know whether the default 60 second value is in place if this function is not called.

Источник

Класс SQLite3

Класс, предоставляющий доступ к API SQLite 3 базе данных.

Обзор классов

public __construct ( string $filename , int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE , string $encryptionKey = «» )

public backup ( SQLite3 $destination , string $sourceDatabase = «main» , string $destinationDatabase = «main» ): bool

public createAggregate (
string $name ,
callable $stepCallback ,
callable $finalCallback ,
int $argCount = -1
): bool

public createFunction (
string $name ,
callable $callback ,
int $argCount = -1 ,
int $flags = 0
): bool

public open ( string $filename , int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE , string $encryptionKey = «» ): void

public openBlob (
string $table ,
string $column ,
int $rowid ,
string $database = «main» ,
int $flags = SQLITE3_OPEN_READONLY
): resource | false

Предопределённые константы

SQLite3::DENY

SQLite3::IGNORE

SQLite3::CREATE_INDEX

SQLite3::CREATE_TABLE

SQLite3::CREATE_TEMP_INDEX

SQLite3::CREATE_TEMP_TABLE

SQLite3::CREATE_TEMP_TRIGGER

SQLite3::CREATE_TEMP_VIEW

SQLite3::CREATE_TRIGGER

SQLite3::CREATE_VIEW

SQLite3::DELETE

SQLite3::DROP_INDEX

SQLite3::DROP_TABLE

SQLite3::DROP_TEMP_INDEX

SQLite3::DROP_TEMP_TABLE

SQLite3::DROP_TEMP_TRIGGER

SQLite3::DROP_TEMP_VIEW

SQLite3::DROP_TRIGGER

SQLite3::DROP_VIEW

SQLite3::INSERT

SQLite3::PRAGMA

SQLite3::READ

SQLite3::SELECT

SQLite3::TRANSACTION

SQLite3::UPDATE

SQLite3::ATTACH

SQLite3::DETACH

SQLite3::ALTER_TABLE

SQLite3::REINDEX

SQLite3::ANALYZE

SQLite3::CREATE_VTABLE

SQLite3::DROP_VTABLE

SQLite3::FUNCTION

SQLite3::SAVEPOINT

SQLite3::COPY

SQLite3::RECURSIVE

Источник

Основы использования SQLite3 в PHP

В этой статье рассмотрим основы SQLite3 для PHP — полезной библиотеки (расширение для PHP), написанной на языке C, которая осуществляет механизм работы с данными с помощью SQL. Фактически, это безтиповая база данных, которая содержится всего в одном файле, который в свою очередь находится в самом проекте (в его файловой системе). Технически в этой базе всё — строки. Мы указываем тип данных для самой библиотеки, чтобы она сама «разруливала» сортировку по числовым полям.

Читайте также:  Горизонтальное вертикальное меню css

Преимущества и ограничения

  • Полностью бесплатна
  • Нет необходимости в средствах администрирования
  • Высокая производительность и легкая переносимость
  • Поддержка процедурного и объектно-ориентированного интерфейсов
  • Хранение больших объемов данных
  • Хранение строк и бинарных данных неограниченной длины
  • Предназначена для небольших и средних приложений
  • Основной выигрыш в производительности, если преобладают операции вставки и выборки данных
  • При чрезвычайно активном обращении к данным, или в случае частых сортировок, SQLite работает медленнее своих конкурентов

Поддержка SQLite3 в PHP

  • ВPHP 5.0 поддержка SQLite версии 2 была встроена в ядро
  • Начиная с PHP 5.1 поддержка SQLite вынесена за пределы ядра php_sqlite
  • В PHP 5.3 добавлена поддержка SQLite версии 3 php_sqlite3
  • В PHP 5.4 поддержка SQLite версии 2 удалена php_sqlite

Особенности SQLite3

CREATE TABLE users(id INTEGER, name TEXT, age INTEGER)
CREATE TABLE users(id, name, age)

Для задания первичного ключа

id INTEGER PRIMARY KEY id INTEGER PRIMARY KEY AUTOINCREMENT

Экранирование строк через двойной апостроф

Создание, открытие и закрытие базы данных

//Создаём или открываем базу данных test.db $db = new SQLite3("test.db"); //Закрываем базу данных без удаления объекта $db->close(); //Открываем другую базу данных для работы $db->open("another.db"); //Удаляем объект unset($db);

Выполнение запроса

//Экранирование строк $name = $db->escapeString($name); //Для запросов без выборки данных $sql = "INSERT INTO users (name, age) VALUES ('$name', 25)"; //Возвращает значение булева типа $result = $db->exec($sql); //Количество изменённых записей echo $db->changes(); //Отслеживание ошибок echo $db->lastErrorCode(); echo $db->lastErrorMsg();

Подготовленные запросы

$sql = "INSERT INTO users (name, age) VALUES (:name, :age)"; //Готовим запрос $stmt = $db->prepare($sql); //Привязываем параметры $stmt->bindParam(':name',$name); $stmt->bindParam(':age',$age); //Исполняем запрос $result = $stmt->execute(); //Закрываем при необходимости $stmt->close();

Выборка данных

$sql = "SELECT name, age FROM users"; // В случае неудачи возвращает false $result = $db->querySingle($sql); //В $result - значение первого поля первой записи $result = $db->querySingle($sql, true); // В $result - массив значений первой записи // Стандартная выборка $result = $db->query($sql); // Обработка выборки $row = $result->fetchArray(); // SQLITE3_BOTH // Получаем ассоциативный массив $row = $result->fetchArray(SQLITE3_ASSOC); // Получаем индексированный массив $row = $result->fetchArray(SQLITE3_NUM);

Инструменты администрирования БД SQLite

Sqliteman — полезный инструмент для администрирования баз данных SQLite3. Это аналог привычного phpmyadmin для MySql. Программа имеет неплохой графический интерфейс на русском языке, является портативной и не требует установки на ПК. Скачать Sqliteman можно по этой ссылке .

Ещё один популярный менеджер баз данных SQLite — SQLiteStudio

Источник

Оцените статью