Вставка данных в таблицы SQLite3 с помощью PHP PDO
В этом уроке речь пойдёт о том, как использовать PHP PDO для вставки данных в таблицы базы данных SQLite.
Мы будем использовать таблицы проектов и задач, созданную нами в уроке по созданию таблиц .
Чтобы вставить данные в таблицу, выполните следующие действия:
- Подключитесь к базе данных SQLite , создав новый экземпляр PDO с путем к файлу базы данных SQLite.
- Составьте инструкцию
INSERT
. - Вызовите метод
prepare()
объекта PDO, чтобы подготовить операторINSERT
к выполнению. Этот метод возвращает объектPDOStatement
. - Свяжите значения с параметрами, вызвав метод
bindValue()
объектаPDOStatement
. - Выполните инструкцию, вызвав метод
execute()
объектаPDOStatement
. - В случае, если таблица имеет сгенерированный столбец автоинкремента в качестве первичного ключа, вы можете получить вставленный идентификатор, вызвав метод
lastInsertId()
объекта PDO.
В следующем классе SQLiteInsert
есть два метода для вставки данных в таблицы. Метод insertProject()
вставляет новый проект в таблицу проектов, а метод insertTask()
вставляет новую задачу в таблицу задач.
<?php namespace App; /** * PHP SQLite Insert Demo */ class SQLiteInsert { /** * PDO object * @var \PDO */ private $pdo; /** * Initialize the object with a specified PDO object * @param \PDO $pdo */ public function __construct($pdo) { $this->pdo = $pdo; } /** * Insert a new project into the projects table * @param string $projectName * @return the id of the new project */ public function insertProject($projectName) { $sql = 'INSERT INTO projects(project_name) VALUES(:project_name)'; $stmt = $this->pdo->prepare($sql); $stmt->bindValue(':project_name', $projectName); $stmt->execute(); return $this->pdo->lastInsertId(); } /** * Insert a new task into the tasks table * @param type $taskName * @param type $startDate * @param type $completedDate * @param type $completed * @param type $projectId * @return int id of the inserted task */ public function insertTask($taskName, $startDate, $completedDate, $completed, $projectId) { $sql = 'INSERT INTO tasks(task_name,start_date,completed_date,completed,project_id) ' . 'VALUES(:task_name,:start_date,:completed_date,:completed,:project_id)'; $stmt = $this->pdo->prepare($sql); $stmt->execute([ ':task_name' => $taskName, ':start_date' => $startDate, ':completed_date' => $completedDate, ':completed' => $completed, ':project_id' => $projectId, ]); return $this->pdo->lastInsertId(); } }
В методе insertTask()
вместо значений привязки мы передаем вставленные значения в виде массива в метод execute()
.
Мы используем следующий код в файле index.php
для вставки проектов и связанных с ними задач в таблицу проектов и задач:
<?php require 'vendor/autoload.php'; use App\SQLiteConnection; use App\SQLiteInsert; $pdo = (new SQLiteConnection())->connect(); $sqlite = new SQLiteInsert($pdo); // insert a new project $projectId = $sqlite->insertProject('PHP SQLite Demo'); // insert some tasks for the project $sqlite->insertTask('Prepare the sample database schema', '2016-06-01', '2016-06-01', 1, $projectId); $sqlite->insertTask('Create new tables ', '2016-05-01', null, 0, $projectId); $sqlite->insertTask('Insert some sample data', '2016-05-01', '2016-06-02', 1, $projectId); // insert a second project $projectId = $sqlite->insertProject('Mastering SQLite'); // insert the tasks for the second project $sqlite->insertTask('Go to sqlitetutorial.net', '2016-06-01', null, 0, $projectId); $sqlite->insertTask('Read all the tutorials.', '2016-06-01', null, 0, $projectId); $sqlite->insertTask('Use Try It page to practice the SQLite commands.', '2016-06-01', null, 0, $projectId); $sqlite->insertTask('Develop a simple SQLite-based application', '2016-06-15', null, 0, $projectId);
В этом уроке мы узнали, как использовать PDOStatement
для вставки данных в таблицы SQLite.