Создание таблиц базы данных 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
.
<?php namespace App; /** * SQLite Create Table Demo */ class SQLiteCreateTable { /** * PDO object * @var \PDO */ private $pdo; /** * connect to the SQLite database */ public function __construct($pdo) { $this->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
используйте следующий код:
<?php require 'vendor/autoload.php'; use App\SQLiteConnection as SQLiteConnection; use App\SQLiteCreateTable as SQLiteCreateTable; $sqlite = new SQLiteCreateTable((new SQLiteConnection())->connect()); // create new tables $sqlite->createTables(); // get the table list $tables = $sqlite->getTableList(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="description" content=""> <meta name="author" content="sqlitetutorial.net"> <title>PHP SQLite CREATE TABLE Demo</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> </head> <body> <div class="container"> <div class="page-header"> <h1>PHP SQLite CREATE TABLE Demo</h1> </div> <table class="table table-bordered"> <thead> <tr> <th>Tables</th> </tr> </thead> <tbody> <?php foreach ($tables as $table) : ?> <tr> <td><?php echo $table ?></td> </tr> <?php endforeach; ?> </tbody> </table> </div> </body> </html>
Сначала мы создаем новый экземпляр класса SQLiteCreateTable
и передаем объект PDO, который создается с помощью класса SQLiteConnection
.
Во-вторых, мы вызываем метод createTables()
для создания новых таблиц и метод getTableList()
для запроса вновь созданных таблиц.
В-третьих, в HTML коде мы отображаем список таблиц.
В этом уроке я показал, как создавать новые таблицы, выполняя оператор CREATE TABLE с использованием PHP PDO.