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 и описание
1public 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.

2public bool SQLite3::exec ( string $query )

Эта процедура предоставляет сокращенный способ выполнения SQL-команд, которые задаются параметром sql и могут состоять из нескольких SQL-команд. Эта процедура используется для выполнения запроса без результата к заданной базе данных.

3public SQLite3Result SQLite3::query ( string $query )

Эта процедура выполняет SQL-запрос и возвращает объект классаSQLite3Result.

4public int SQLite3::lastErrorCode ( void )

Эта процедура возвращает числовой код результата последнего неудачного запроса SQLite.

5public string SQLite3::lastErrorMsg ( void )

Эта процедура возвращает текстовое описание на английском языке последнего неудачного запроса SQLite.

6public int SQLite3::changes ( void )

Эта процедура возвращает количество строк базы данных, обновленных, вставленных или удаленных последним SQL-оператором.

7public bool SQLite3::close ( void )

Эта процедура закрывает соединение с базой данных, ранее открытое вызовом SQLite3::open().

8public 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
Другие расширения