From 50ff083c5faa63a0d0519e2796c325673601a901 Mon Sep 17 00:00:00 2001 From: Victor Westerlund Date: Wed, 14 Feb 2024 02:56:46 +0100 Subject: [PATCH] feat: add executor for DELETE statements --- src/MySQL.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/MySQL.php b/src/MySQL.php index 6cba7b1..9e72069 100644 --- a/src/MySQL.php +++ b/src/MySQL.php @@ -296,6 +296,29 @@ return $this->execute_query($sql, self::to_list_array($values)); } + // Create Prepared Statemente for DELETE with WHERE condition(s) + public function delete(array ...$conditions): mysqli_result|bool { + $this->throw_if_no_table(); + + // Make constraint for table model if defined + if ($this->model) { + foreach ($conditions as $condition) { + foreach (array_keys($condition) as $col) { + // Throw if column in entity does not exist in defiend table model + if (!in_array($col, $this->model)) { + throw new Exception("Column key '{$col}' does not exist in table model"); + } + } + } + } + + // Set DELETE WHERE conditions from arguments + $this->where(...$conditions); + + $sql = "DELETE FROM {$this->table} WHERE {$this->filter_sql}"; + return $this->execute_query($sql, self::to_list_array($this->filter_values)); + } + // Execute SQL query with optional prepared statement and return mysqli_result public function exec(string $sql, mixed $params = null): mysqli_result { return $this->execute_query($sql, self::to_list_array($params));