Удаление данных в SQLite с использованием PHP PDO

       SQLite      php    ООП    pdo    sqlite3      292    
SQLite3: Удаление данных с помощью 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.

Комментарии временно оключены

Поиск

Популярное