SQLite - PHP
Установка
Начиная с PHP 5.3.0, расширение SQLite3 включено по умолчанию. Вы можете использовать--without-sqlite3, чтобы отключить расширение SQLite3.
Пользователи Windows должны включить php_sqlite3.dll, чтобы использовать это расширение. Начиная с PHP 5.3.0, эта DLL включена в дистрибутив PHP для Windows.
Для получения подробных инструкций по установке рекомендуется ознакомиться с нашим руководством по PHP и его официальным сайтом.
API интерфейса PHP
Ниже приведены важные программы PHP, которые могут удовлетворить ваши потребности в использовании баз данных SQLite в программах PHP. Если вам нужны более подробные сведения, обратитесь к официальной документации PHP.
| Нет. | API и описание |
|---|---|
| 1 | public void SQLite3::open ( filename, flags, encryption_key ) Открывает базу данных SQLite 3. Если сборка включает шифрование, она попытается использовать ключ. Если параметр filenamefilenameустановлен в':memory:', то SQLite3::open() создаст базу данных в оперативной памяти (RAM), которая существует только в течение сеанса. Если filename filename является именем реального файла устройства, то SQLite3::open() использует значение этого параметра, чтобы попытаться открыть файл базы данных. Если файл с таким именем не существует, будет создан новый файл базы данных с таким именем. Необязательные флаги используются для определения, открывать ли базу данных SQLite. По умолчанию она открывается, когда используется SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE. |
| 2 | public bool SQLite3::exec ( string $query ) Эта процедура предоставляет сокращенный способ выполнения SQL-команд, которые задаются параметром sql и могут состоять из нескольких SQL-команд. Эта процедура используется для выполнения запроса без результата к заданной базе данных. |
| 3 | public SQLite3Result SQLite3::query ( string $query ) Эта процедура выполняет SQL-запрос и возвращает объект классаSQLite3Result. |
| 4 | public int SQLite3::lastErrorCode ( void ) Эта процедура возвращает числовой код результата последнего неудачного запроса SQLite. |
| 5 | public string SQLite3::lastErrorMsg ( void ) Эта процедура возвращает текстовое описание на английском языке последнего неудачного запроса SQLite. |
| 6 | public int SQLite3::changes ( void ) Эта процедура возвращает количество строк базы данных, обновленных, вставленных или удаленных последним SQL-оператором. |
| 7 | public bool SQLite3::close ( void ) Эта процедура закрывает соединение с базой данных, ранее открытое вызовом SQLite3::open(). |
| 8 | public string SQLite3::escapeString ( string $value ) Эта процедура возвращает строку, которая была должным образом экранирована для использования в SQL-запросе по соображениям безопасности. |
Подключение к базе данных
Следующий PHP-код показывает, как подключиться к существующей базе данных. Если база данных не существует, она будет создана, и в итоге будет возвращён объект базы данных.
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
?>
Теперь давайте запустим вышеприведённую программу, чтобы создать нашу базу данных в текущем каталогеtest.db. Вы можете изменить путь по мере необходимости. Если база данных создана успешно, будет отображено сообщение, показанное ниже:
Open database successfully
Создание таблицы
Следующий фрагмент PHP-кода будет использоваться для создания таблицы в ранее созданной базе данных:
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);
EOF;
$ret = $db->exec($sql);
if(!$ret){
echo $db->lastErrorMsg();
} else {
echo "Table created successfully\n";
}
$db->close();
?>
Когда вышеуказанная программа будет выполнена, онаtest.dbсоздаст в ней таблицу COMPANY и отобразит следующее сообщение:
Opened database successfully Table created successfully
Операция INSERT
Следующая PHP-программа показывает, как создавать записи в таблице COMPANY, созданной выше:
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
EOF;
$ret = $db->exec($sql);
if(!$ret){
echo $db->lastErrorMsg();
} else {
echo "Records created successfully\n";
}
$db->close();
?>
При выполнении вышеприведённой программы будут созданы заданные записи в таблице COMPANY и выведены следующие две строки:
Opened database successfully Records created successfully
Операция SELECT
Следующая PHP-программа показывает, как извлекать и отображать записи из таблицы COMPANY, созданной ранее:
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
SELECT * from COMPANY;
EOF;
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
echo "ID = ". $row['ID'] . "\n";
echo "NAME = ". $row['NAME'] ."\n";
echo "ADDRESS = ". $row['ADDRESS'] ."\n";
echo "SALARY = ".$row['SALARY'] ."\n\n";
}
echo "Operation done successfully\n";
$db->close();
?>
При выполнении вышеприведённой программы будет получен следующий результат:
Opened database successfully ID = 1 NAME = Paul ADDRESS = California SALARY = 20000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 Operation done successfully
Операция UPDATE
Следующий PHP-код показывает, как использовать оператор UPDATE для обновления любой записи, а затем извлечь и отобразить обновлённые записи из таблицы COMPANY:
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
UPDATE COMPANY set SALARY = 25000.00 where ID=1;
EOF;
$ret = $db->exec($sql);
if(!$ret){
echo $db->lastErrorMsg();
} else {
echo $db->changes(), " Record updated successfully\n";
}
$sql =<<<EOF
SELECT * from COMPANY;
EOF;
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
echo "ID = ". $row['ID'] . "\n";
echo "NAME = ". $row['NAME'] ."\n";
echo "ADDRESS = ". $row['ADDRESS'] ."\n";
echo "SALARY = ".$row['SALARY'] ."\n\n";
}
echo "Operation done successfully\n";
$db->close();
?>
При выполнении вышеприведённой программы будет получен следующий результат:
Opened database successfully 1 Record updated successfully ID = 1 NAME = Paul ADDRESS = California SALARY = 25000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 Operation done successfully
Операция DELETE
Следующий PHP-код показывает, как использовать оператор DELETE для удаления любой записи, а затем извлечь и отобразить оставшиеся записи из таблицы COMPANY:
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
DELETE from COMPANY where ID=2;
EOF;
$ret = $db->exec($sql);
if(!$ret){
echo $db->lastErrorMsg();
} else {
echo $db->changes(), " Record deleted successfully\n";
}
$sql =<<<EOF
SELECT * from COMPANY;
EOF;
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
echo "ID = ". $row['ID'] . "\n";
echo "NAME = ". $row['NAME'] ."\n";
echo "ADDRESS = ". $row['ADDRESS'] ."\n";
echo "SALARY = ".$row['SALARY'] ."\n\n";
}
echo "Operation done successfully\n";
$db->close();
?>
При выполнении вышеприведённой программы будет получен следующий результат:
Opened database successfully 1 Record deleted successfully ID = 1 NAME = Paul ADDRESS = California SALARY = 25000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 Operation done successfullyДругие расширения