Удаление данных в SQLite с использованием PHP PDO
В этом уроке я покажу шаги по удалению данных в базе данных SQLite с использованием PHP PDO.
Шаги по удалению данных из PHP PDO
Чтобы удалить данные в таблице в базе данных SQLite из приложения PHP, используйте следующие шаги:
- Подключитесь к базе данных SQLite, создав экземпляр класса PDO.
- Подготовьте оператор
DELETE
к исполнению. - Передайте значения в оператор, используя метод
bindValue()
объектаPDOStatement
. - Вызовите метод
execute()
объектаPDOStatement
, чтобы выполнить оператор удаления. - Вызовите метод
rowCount()
объектаPDOStatement
, чтобы получить количество удаленных строк.
SQLite PHP: примеры удаления данных
Для демонстрации мы будем использовать проекты и задачи, которые мы создали в этом уроке .
Сначала мы создаем класс SQLiteDelete
в директории приложения.
Следующий метод deleteTask()
удаляет задачу по task_id
. Метод возвращает количество удаленных строк, вызывая метод rowCount()
объекта PDOStatement
.
Мы используем метод bindValue()
для передачи значения идентификатора задачи в оператор DELETE
.
/** * Delete a task by task id * @param int $taskId * @return int the number of rows deleted */ public function deleteTask($taskId) { $sql = 'DELETE FROM tasks ' . 'WHERE task_id = :task_id'; $stmt = $this->pdo->prepare($sql); $stmt->bindValue(':task_id', $taskId); $stmt->execute(); return $stmt->rowCount(); }
Метод deleteTaskByProject()
удаляет все задачи, связанные с проектом, указанным идентификатором проекта.
В этом методе вместо использования метода bindValue()
для передачи значений в оператор DELETE
мы передаем входные значения в виде массива в метод execute()
.
/** * Delete all tasks associated with a project * @param int $projectId * @return int the number of rows deleted */ public function deleteTaskByProject($projectId) { $sql = 'DELETE FROM tasks ' . 'WHERE project_id = :project_id'; $stmt = $this->pdo->prepare($sql); $stmt->execute([':project_id' => $projectId]); return $stmt->rowCount(); }
Следующий метод удаляет проект, указанный идентификатором проекта. Он также возвращает количество удаленных строк в таблице проектов.
Кроме того, из-за ограничения внешнего ключа все задачи, связанные с проектом, также удаляются. Функция rowCount()
не учитывает удаленные строки в таблице задач.
/** * Delete the project by project id * @param int $projectId * @return int the number of rows deleted */ public function deleteProject($projectId) { $sql = 'DELETE FROM projects ' . 'WHERE project_id = :project_id'; $stmt = $this->pdo->prepare($sql); $stmt->execute([':project_id' => $projectId]); return $stmt->rowCount(); }
Во-вторых, мы создаем скрипт index.php
для проверки класса SQLiteDelete
:
<?php require 'vendor/autoload.php'; use App\SQLiteConnection as SQLiteConnection; use App\SQLiteDelete as SQLiteDelete; $pdo = (new SQLiteConnection())->connect(); $sqlite = new SQLiteDelete($pdo); // delete task id 1 $taskId = 1; $rowDeleted = $sqlite->deleteTask($taskId); echo 'The number of rows deleted: ' . $rowDeleted . '<br>'; // delete task associated with a project id 1 $projectId = 1; $sqlite->deleteTaskByProject($projectId); echo 'The number of task in the project #' . $projectId . ' deleted: ' . $rowDeleted . '<br>'; // delete project with id 1 and also its associated tasks $projectId = 2; $sqlite->deleteProject(2); echo 'The number of project deleted: ' . $rowDeleted . '<br>';
Ниже приведен вывод сценария:
The number of rows deleted: 1 The number of task in the project #1 deleted: 1 The number of project deleted: 1
В этом уроке мы узнали, как удалить данные в одной или нескольких таблицах в базе данных SQLite с помощью PHP PDO.