prepare($sql) )) { $statement = $this->execute($statement, $parameters, false); $statement->setFetchMode(\PDO::FETCH_ASSOC); return $statement; } } catch (\PDOException $e) { throw $e; } } public function runQuery(string $sql, array $parameters = []): PDOStatement { # var_dump($sql, $parameters); die(); try { if (false !== ( $statement = $this->prepare($sql) )) { return $this->execute($statement, $parameters, true); } } catch (\PDOException $e) { throw $e; } } public function execute(PDOStatement $statement, array $parameters = [], bool $commit = true): ?PDOStatement { try { if ( ! $this->inTransaction() ) { $this->beginTransaction(); } if (empty($parameters) ? $statement->execute() : $statement->execute($parameters)) { $statement->lastInsertId = $this->lastInsertId(); if ($commit) { $this->commit(); } return $statement; } else { throw new PDOException('Could not begin transaction or given statement is invalid.'); } } catch (\PDOException $e) { $this->rollback(); throw $e; } return null; } }