Учебники

SQLite — PHP

В этой главе вы узнаете, как использовать 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();
?>

Когда вышеуказанная программа будет выполнена, она даст следующий результат.