В этом уроке я покажу вам, как создавать новые таблицы в базе данных 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.
Комментарии (0)
Пока еще не было комментариев ✍️