Удаление данных в 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.
Предыдущая запись
SQLite3: Транзакции с использованием PHP PDO