Menu
SQLite в примерах

SQLite в примерах

SQLite - Быстрая лёгкая кроссплатформенная файловая база данных для хранения небольших объемов информации. Встречается повсеместно - android, iOS, браузеры, операционные системы.  Имеет собственную реализацию языка SQL. Подходит для реализации на слабых устройствах, например OpenWRT или Raspbian.

Работа с Sqlite из командной строки

Установка библиотек

apt install sqlite3

в интерактивном режиме 

sqlite3 cats.db

Из скрипта

#!/bin/sh

output=`sqlite3 cats.db "select * from cats where name='Tom';"`
echo $output

Работа с Sqlite из PHP

Установка

apt install sqlite3 php-sqlite3 

Подключение

$db = new SQLite3('mydb.db');

Вставка

$db->exec("INSERT INTO cars(name, color) VALUES('Tom', 'black')");

Выборка

$res = $db->query('SELECT * FROM cats');
while ($row = $res->fetchArray()) {
  echo "{$row['id']} {$row['name']} {$row['color']} \n";
}

Через php PDO

$pdo = new PDO('sqlite:mydb.db');
$stm = $pdo->query("SELECT * FROM cats");
$rows = $stm->fetchAll(PDO::FETCH_NUM);
foreach($rows as $row) {
  printf("$row[0] $row[1] $row[2]\n");
}

Визуальное управление sqlite - phpliteadmin

К сожалению, кроме проекта phpliteadmin больше никто не написал внятную админку для sqlite на PHP, но и у этого проекта при обновлении до PHP 8.2 появились проблемы совместимости

Пришлось немного подправить. Рабочая версия для php 8.2: 

phpliteadmin.v1.9.8.2 - PHP 8.2 adapted

Changes: 
1. Mooved class MicroTimer
2. Removed get_magic_quotes_gpc() - not supported
3. Replace
#       while (list($key, $val) = each($process)) {
to
      foreach ($process as $key => $val) {

Решения

vacuum

Если базу много пишется и стирается - имеет смысл её сжать запросом

$ sqlite3 cats.db 'VACUUM;'

Lisolog / 2023