В этой главе вы узнаете, как использовать SQLite в программах PHP.
Монтаж
Расширение SQLite3 включено по умолчанию начиная с PHP 5.3.0. Это можно отключить, используя —without-sqlite3 во время компиляции.
Пользователи Windows должны включить php_sqlite3.dll, чтобы использовать это расширение. Эта DLL включена в дистрибутивы Windows для PHP начиная с PHP 5.3.0.
Для получения подробных инструкций по установке, пожалуйста, просмотрите наш учебник по PHP и его официальный сайт.
API интерфейса PHP
Ниже приведены важные процедуры PHP, которые могут удовлетворить ваши требования для работы с базой данных SQLite из вашей программы PHP. Если вы ищете более сложное приложение, вы можете посмотреть официальную документацию по PHP.
Sr.No. | API и описание |
---|---|
1 |
public void SQLite3 :: open (имя файла, флаги, ключ шифрования) Открывает базу данных SQLite 3. Если сборка включает шифрование, то она попытается использовать ключ. Если имя файла задано как «: memory:» , SQLite3 :: open () создаст базу данных в оперативной памяти в ОЗУ, которая действует только на время сеанса. Если имя файла является фактическим именем файла устройства, SQLite3 :: open () пытается открыть файл базы данных, используя его значение. Если файл с таким именем не существует, то создается новый файл базы данных с таким именем. Необязательные флаги используются для определения того, как открыть базу данных SQLite. По умолчанию open использует SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE. |
2 |
public bool SQLite3 :: exec (строка $ query) Эта подпрограмма обеспечивает быстрый и простой способ выполнения команд SQL, предоставляемых аргументом sql, который может состоять из нескольких команд SQL. Эта подпрограмма используется для выполнения запроса без результата к данной базе данных. |
3 |
public SQLite3Result SQLite3 :: query (строка $ query) Эта подпрограмма выполняет запрос SQL, возвращая объект SQLite3Result, если запрос возвращает результаты. |
4 |
public int SQLite3 :: lastErrorCode (void) Эта подпрограмма возвращает числовой код результата последнего неудачного запроса SQLite. |
5 |
открытая строка SQLite3 :: lastErrorMsg (void) Эта подпрограмма возвращает текст на английском языке, описывающий самый последний неудачный запрос SQLite. |
6 |
public int SQLite3 :: changes (void) Эта подпрограмма возвращает количество строк базы данных, которые были обновлены, вставлены или удалены самой последней инструкцией SQL. |
7 |
public bool SQLite3 :: close (void) Эта подпрограмма закрывает соединение с базой данных, ранее открытое при вызове SQLite3 :: open (). |
8 |
открытая строка SQLite3 :: escapeString (строка $ value) Эта подпрограмма возвращает строку, которая была должным образом экранирована для безопасного включения в оператор SQL. |
public void SQLite3 :: open (имя файла, флаги, ключ шифрования)
Открывает базу данных SQLite 3. Если сборка включает шифрование, то она попытается использовать ключ.
Если имя файла задано как «: memory:» , SQLite3 :: open () создаст базу данных в оперативной памяти в ОЗУ, которая действует только на время сеанса.
Если имя файла является фактическим именем файла устройства, SQLite3 :: open () пытается открыть файл базы данных, используя его значение. Если файл с таким именем не существует, то создается новый файл базы данных с таким именем.
Необязательные флаги используются для определения того, как открыть базу данных SQLite. По умолчанию open использует SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.
public bool SQLite3 :: exec (строка $ query)
Эта подпрограмма обеспечивает быстрый и простой способ выполнения команд SQL, предоставляемых аргументом sql, который может состоять из нескольких команд SQL. Эта подпрограмма используется для выполнения запроса без результата к данной базе данных.
public SQLite3Result SQLite3 :: query (строка $ query)
Эта подпрограмма выполняет запрос SQL, возвращая объект SQLite3Result, если запрос возвращает результаты.
public int SQLite3 :: lastErrorCode (void)
Эта подпрограмма возвращает числовой код результата последнего неудачного запроса SQLite.
открытая строка SQLite3 :: lastErrorMsg (void)
Эта подпрограмма возвращает текст на английском языке, описывающий самый последний неудачный запрос SQLite.
public int SQLite3 :: changes (void)
Эта подпрограмма возвращает количество строк базы данных, которые были обновлены, вставлены или удалены самой последней инструкцией SQL.
public bool SQLite3 :: close (void)
Эта подпрограмма закрывает соединение с базой данных, ранее открытое при вызове SQLite3 :: open ().
открытая строка SQLite3 :: escapeString (строка $ 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(); ?>
Когда вышеуказанная программа будет выполнена, она создаст таблицу COMPANY в вашем test.db и отобразит следующие сообщения:
Opened database successfully Table created successfully
ВСТАВИТЬ Операция
Следующая программа 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
ВЫБЕРИТЕ Операцию
Следующая программа 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
ОБНОВЛЕНИЕ Операция
Следующий 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
УДАЛЕНИЕ Операция
Следующий 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(); ?>
Когда вышеуказанная программа будет выполнена, она даст следующий результат.