<?php

// class	Connection	extends PDO	{
//     private $stmt;
//     public	function __construct(string	$dsn)	{
//         parent::__construct($dsn);
//         echo "connection";
//         $this->setAttribute(PDO::ATTR_ERRMODE,	PDO::ERRMODE_EXCEPTION);	}

//     public function executeQuery(string	$query,	array $parameters =	[])	:bool {
//         $this->stmt =	parent::prepare($query);
//         foreach ($parameters as	$name =>	$value)	{
//             $this->stmt->bindValue($name,	$value[0],	$value[1]);	}
//         return	$this->stmt->execute();	}
//     public	function getResults():	array {
//         return	$this->stmt->fetchall();
//     }
// }

class Connection extends SQLite3
{
    private $stmt;
    private $result;
    function __construct($dsn)
    {
        $this->open($dsn);
        $this->enableExceptions(true);
    }

    public function executeQuery(string $query, array $parameters = []): bool
    {
        $this->stmt = parent::prepare($query);
        foreach ($parameters as $name => $value) {
            $this->stmt->bindValue($name, $value[0], $value[1]);
        }
        $this->result = $this->stmt->execute();
        if ($this->result == false) {
            $this->result->finalize();
            return false;
        } else {
            $this->result->finalize();
            return true;
        }
    }

    public function getResults(): array
    {
        $resultArray = $this->result->fetchArray(SQLITE3_ASSOC);
        $multiArray = array();
        while($resultArray != false){ //read next row
            $multiArray[]=$resultArray;
            $resultArray = $this->result->fetchArray(SQLITE3_ASSOC); //insert all rows to $multiArray
        }
        if ($multiArray == NULL)
            return array();
        else
            return $multiArray;
    }
}