- Создание таблиц базы данных SQLite3 с использованием PHP PDO
- SQLite — PHP
- Installation
- PHP Interface APIs
- Connect to Database
- Create a Table
- INSERT Operation
- SELECT Operation
- UPDATE Operation
- DELETE Operation
- Основы использования SQLite3 в PHP
- Преимущества и ограничения
- Поддержка SQLite3 в PHP
- Особенности SQLite3
- Создание, открытие и закрытие базы данных
- Выполнение запроса
- Подготовленные запросы
- Выборка данных
- Инструменты администрирования БД SQLite
Создание таблиц базы данных SQLite3 с использованием PHP PDO
В этом уроке я покажу вам, как создавать новые таблицы в базе данных SQLite с использованием PHP PDO.
Мы создадим две новые таблицы в базе данных phpsqlite, которую мы создали в предыдущем уроке . Ниже приведен код SQL, который создает таблицы проектов и задач.
CREATE TABLE IF NOT EXISTS projects ( project_id INTEGER PRIMARY KEY, project_name TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS tasks ( task_id INTEGER PRIMARY KEY, task_name TEXT NOT NULL, completed INTEGER NOT NULL, start_date TEXT, completed_date TEXT, project_id INTEGER NOT NULL, FOREIGN KEY ( project_id ) REFERENCES projects (project_id) ON UPDATE CASCADE ON DELETE CASCADE );
Чтобы создать новую таблицу в базе данных SQLite с помощью PDO, используйте следующие шаги:
- Сначала подключитесь к базе данных SQLite, создав экземпляр класса PDO.
- Во-вторых, выполните инструкцию CREATE TABLE, вызвав метод exec () объекта PDO.
Мы будем повторно использовать класс SQLiteConnection , который мы разработали в предыдущем уроке. Следующий класс SQLiteCreateTable демонстрирует, как создавать новые таблицы в нашей базе данных phpsqlite .
pdo = $pdo; > /** * create tables */ public function createTables() < $commands = ['CREATE TABLE IF NOT EXISTS projects ( project_id INTEGER PRIMARY KEY, project_name TEXT NOT NULL )', 'CREATE TABLE IF NOT EXISTS tasks ( task_id INTEGER PRIMARY KEY, task_name VARCHAR (255) NOT NULL, completed INTEGER NOT NULL, start_date TEXT, completed_date TEXT, project_id VARCHAR (255), FOREIGN KEY (project_id) REFERENCES projects(project_id) ON UPDATE CASCADE ON DELETE CASCADE)']; // execute the sql commands to create new tables foreach ($commands as $command) < $this->pdo->exec($command); > > /** * get the table list in the database */ public function getTableList() < $stmt = $this->pdo->query("SELECT name FROM sqlite_master WHERE type = 'table' ORDER BY name"); $tables = []; while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) < $tables[] = $row['name']; >return $tables; > >
Метод createTables() используется для создания таблиц в базе данных phpsqlite. Во-первых, у нас есть массив, в котором хранятся операторы CREATE TABLE . Затем мы перебираем массив и выполняем каждую инструкцию CREATE TABLE один за другим, используя метод exec() объекта PDO.
Метод getTableList() выбирает все таблицы в базе данных, запрашивая имя таблицы в таблице sqlite_master . Предикат в предложении WHERE гарантирует, что запрос возвращает только таблицы, а не представления. Вы узнаете, как запрашивать данные при использовании PDO в следующем уроке.
Теперь пришло время использовать разработанные нами классы. В файле index.php используйте следующий код:
connect()); // create new tables $sqlite->createTables(); // get the table list $tables = $sqlite->getTableList(); ?> PHP SQLite CREATE TABLE Demo Tables
Сначала мы создаем новый экземпляр класса SQLiteCreateTable и передаем объект PDO, который создается с помощью класса SQLiteConnection .
Во-вторых, мы вызываем метод createTables() для создания новых таблиц и метод getTableList() для запроса вновь созданных таблиц.
В-третьих, в HTML коде мы отображаем список таблиц.
В этом уроке я показал, как создавать новые таблицы, выполняя оператор CREATE TABLE с использованием PHP PDO.
SQLite — PHP
In this chapter, you will learn how to use SQLite in PHP programs.
Installation
SQLite3 extension is enabled by default as of PHP 5.3.0. It’s possible to disable it by using —without-sqlite3 at compile time.
Windows users must enable php_sqlite3.dll in order to use this extension. This DLL is included with Windows distributions of PHP as of PHP 5.3.0.
For detailed installation instructions, kindly check our PHP tutorial and its official website.
PHP Interface APIs
Following are important PHP routines which can suffice your requirement to work with SQLite database from your PHP program. If you are looking for a more sophisticated application, then you can look into PHP official documentation.
public void SQLite3::open ( filename, flags, encryption_key )
Opens SQLite 3 Database. If the build includes encryption, then it will attempt to use the key.
If the filename is given as ‘:memory:’, SQLite3::open() will create an in-memory database in RAM that lasts only for the duration of the session.
If the filename is actual device file name, SQLite3::open() attempts to open the database file by using its value. If no file by that name exists, then a new database file by that name gets created.
Optional flags used to determine how to open the SQLite database. By default, open uses SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.
public bool SQLite3::exec ( string $query )
This routine provides a quick, easy way to execute SQL commands provided by sql argument, which can consist of more than one SQL command. This routine is used to execute a result-less query against a given database.
public SQLite3Result SQLite3::query ( string $query )
This routine executes an SQL query, returning an SQLite3Result object if the query returns results.
public int SQLite3::lastErrorCode ( void )
This routine returns the numeric result code of the most recent failed SQLite request.
public string SQLite3::lastErrorMsg ( void )
This routine returns English text describing the most recent failed SQLite request.
public int SQLite3::changes ( void )
This routine returns the number of database rows that were updated, inserted, or deleted by the most recent SQL statement.
public bool SQLite3::close ( void )
This routine closes a database connection previously opened by a call to SQLite3::open().
public string SQLite3::escapeString ( string $value )
This routine returns a string that has been properly escaped for safe inclusion in an SQL statement.
Connect to Database
Following PHP code shows how to connect to an existing database. If database does not exist, then it will be created and finally a database object will be returned.
open('test.db'); > > $db = new MyDB(); if(!$db) < echo $db->lastErrorMsg(); > else < echo "Opened database successfully\n"; >?>
Now, let’s run the above program to create our database test.db in the current directory. You can change your path as per your requirement. If the database is successfully created, then it will display the following message −
Open database successfully
Create a Table
Following PHP program will be used to create a table in the previously created database.
open('test.db'); > > $db = new MyDB(); if(!$db) < echo $db->lastErrorMsg(); > else < echo "Opened database successfully\n"; >$sql =exec($sql); if(!$ret)< echo $db->lastErrorMsg(); > else < echo "Table created successfully\n"; >$db->close(); ?>
When the above program is executed, it will create the COMPANY table in your test.db and it will display the following messages −
Opened database successfully Table created successfully
INSERT Operation
Following PHP program shows how to create records in the COMPANY table created in the above example.
open('test.db'); > > $db = new MyDB(); if(!$db)< echo $db->lastErrorMsg(); > else < echo "Opened database successfully\n"; >$sql =exec($sql); if(!$ret) < echo $db->lastErrorMsg(); > else < echo "Records created successfully\n"; >$db->close(); ?>
When the above program is executed, it will create the given records in the COMPANY table and will display the following two lines.
Opened database successfully Records created successfully
SELECT Operation
Following PHP program shows how to fetch and display records from the COMPANY table created in the above example −
open('test.db'); > > $db = new MyDB(); if(!$db) < echo $db->lastErrorMsg(); > else < echo "Opened database successfully\n"; >$sql =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(); ?>
When the above program is executed, it will produce the following result.
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 Operation
Following PHP code shows how to use UPDATE statement to update any record and then fetch and display the updated records from the COMPANY table.
open('test.db'); > > $db = new MyDB(); if(!$db) < echo $db->lastErrorMsg(); > else < echo "Opened database successfully\n"; >$sql =exec($sql); if(!$ret) < echo $db->lastErrorMsg(); > else < echo $db->changes(), " Record updated successfully\n"; > $sql =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(); ?>
When the above program is executed, it will produce the following result.
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 Operation
Following PHP code shows how to use DELETE statement to delete any record and then fetch and display the remaining records from the COMPANY table.
open('test.db'); > > $db = new MyDB(); if(!$db) < echo $db->lastErrorMsg(); > else < echo "Opened database successfully\n"; >$sql =exec($sql); if(!$ret)< echo $db->lastErrorMsg(); > else < echo $db->changes(), " Record deleted successfully\n"; > $sql =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(); ?>
When the above program is executed, it will produce the following result.
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
Основы использования 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