Create sqlite with php

# SQLite3

In addition to using LIMIT SQL statements you can also use the SQLite3 function querySingle to retrieve a single row, or the first column.

 $database = new SQLite3('mysqlitedb.db'); //Without the optional second parameter set to true, this query would return just //the first column of the first row of results and be of the same type as columnName $database->querySingle('SELECT column1Name FROM table WHERE column2Name=1'); //With the optional entire_row parameter, this query would return an array of the //entire first row of query results. $database->querySingle('SELECT column1Name, column2Name FROM user WHERE column3Name=1', true); ?> 

# SQLite3 Quickstart Tutorial

This is a complete example of all the commonly used SQLite related APIs. The aim is to get you up and running really fast. You can also get a runnable PHP file

# Creating/opening a database

Let’s create a new database first. Create it only if the file doesn’t exist and open it for reading/writing. The extension of the file is up to you, but .sqlite is pretty common and self-explanatory.

$db = new SQLite3('analytics.sqlite', SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE); 

# Creating a table

$db->query('CREATE TABLE IF NOT EXISTS "visits" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" INTEGER, "url" VARCHAR, "time" DATETIME )'); 

# Inserting sample data.

It’s advisable to wrap related queries in a transaction (with keywords BEGIN and COMMIT ), even if you don’t care about atomicity. If you don’t do this, SQLite automatically wraps every single query in a transaction, which slows down everything immensely. If you’re new to SQLite, you may be surprised why the INSERTs are so slow

$db->exec('BEGIN'); $db->query('INSERT INTO "visits" ("user_id", "url", "time") VALUES (42, "/test", "2017-01-14 10:11:23")'); $db->query('INSERT INTO "visits" ("user_id", "url", "time") VALUES (42, "/test2", "2017-01-14 10:11:44")'); $db->exec('COMMIT'); 

Insert potentially unsafe data with a prepared statement. You can do this with named parameters:

$statement = $db->prepare('INSERT INTO "visits" ("user_id", "url", "time") VALUES (:uid, :url, :time)'); $statement->bindValue(':uid', 1337); $statement->bindValue(':url', '/test'); $statement->bindValue(':time', date('Y-m-d H:i:s')); $statement->execute(); you can reuse the statement with different values 

# Fetching data

Let’s fetch today’s visits of user #42. We’ll use a prepared statement again, but with numbered parameters this time, which are more concise:

$statement = $db->prepare('SELECT * FROM "visits" WHERE "user_id" = ? AND "time" >= ?'); $statement->bindValue(1, 42); $statement->bindValue(2, '2017-01-14'); $result = $statement->execute(); echo "Get the 1st row as an associative array:\n"; print_r($result->fetchArray(SQLITE3_ASSOC)); echo "\n"; echo "Get the next row as a numeric array:\n"; print_r($result->fetchArray(SQLITE3_NUM)); echo "\n"; 

Note: If there are no more rows, fetchArray() returns false . You can take advantage of this in a while loop.

Free the memory — this in not done automatically, while your script is running

# Shorthands

Here’s a useful shorthand for fetching a single row as an associative array. The second parameter means we want all the selected columns.

Watch out, this shorthand doesn’t support parameter binding, but you can escape the strings instead. Always put the values in SINGLE quotes! Double quotes are used for table and column names (similar to backticks in MySQL).

$query = 'SELECT * FROM "visits" WHERE "url" = \'' . SQLite3::escapeString('/test') . '\' ORDER BY "id" DESC LIMIT 1'; $lastVisit = $db->querySingle($query, true); echo "Last visit of '/test':\n"; print_r($lastVisit); echo "\n"; 

Another useful shorthand for retrieving just one value.

$userCount = $db->querySingle('SELECT COUNT(DISTINCT "user_id") FROM "visits"'); echo "User count: $userCount\n"; echo "\n"; 

# Cleaning up

Finally, close the database. This is done automatically when the script finishes, though.

Источник

Основы использования 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);

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

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

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

Источник

SQLite3::__construct

Создаёт экземпляр объекта SQLite3 и открывает соединение с базой. Если включено шифрование, то появляется возможность использования ключа.

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

Путь к SQLite базе или :memory: , для использования базы в оперативной памяти. Если filename задать как пустую строку, то будет создана приватная, временная база данных на диске. Эта база данных будет удалена сразу после закрытия соединения с ней.

  • SQLITE3_OPEN_READONLY : Открыть только для чтения.
  • SQLITE3_OPEN_READWRITE : Открыть для чтения и записи.
  • SQLITE3_OPEN_CREATE : Создать новый файл базы данных, если он отсутствует

Необязательный ключ для шифрования/расшифровки базы данных. Если модуль шифрования не установлен, то данный параметр будет проигнорирован.

Ошибки

Выбрасывает исключение Exception в случае возникновения ошибки.

Список изменений

Версия Описание
7.0.10 Параметр filename можно задавать пустой строкой для создания на диске приватной, временной базы данных.

Примеры

Пример #1 Пример использования SQLite3::__construct()

$db -> exec ( ‘CREATE TABLE foo (bar TEXT)’ );
$db -> exec ( «INSERT INTO foo (bar) VALUES (‘This is a test’)» );

$result = $db -> query ( ‘SELECT bar FROM foo’ );
var_dump ( $result -> fetchArray ());
?>

User Contributed Notes 2 notes

$encryption_key and all encryption features will be enabled only if the SQLite encryption module is installed. It’s a proprietary, costly module. So if it’s not present, supplying an encryption key will have absolutely no effect.

Note that the SQLITE3_OPEN_READONLY flag cannot be combined with the SQLITE3_OPEN_CREATE flag. If you combine both of these flags, a rather unhelpful «Unable to open database: out of memory» exception will be thrown.

Источник

Читайте также:  Images in java script
Оцените статью