Здесь неверно практически всё.
В первую очередь начичие примерно миллиона совершенно одинаковых функций и вообще повторений.
Я, кстати, не в первый раз встречаю такой винегрет. Его готовят в каком-то видео на ютубе?
Вот как должно быть на самом деле:
class Database {
public $db;
public function __construct ($dbname, $user = "root", $password = "", $host = "localhost", $type = "mysql", $charset = "utf8", $options = array())
{
$default_options = [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];
$options = array_replace($default_options, $options);
try {
$this->db = new PDO("{$type}:host={$host};dbname={$dbname};charset={$charset};", $user, $password, $options);
} catch (PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
}
public function disconnect () {
$this->db = NULL;
}
public function query ($query, $params = array()) {
$stmt = $this->db->prepare($query);
$stmt->execute($params);
return $stmt;
}
public function getRow ($query, $params = array(), $fetchMode = PDO::PDO_FETCH_ASSOC) {
return $this->query->fetch($fetchMode);
}
public function getRows ($query, $params = array(), $fetchMode = PDO::PDO_FETCH_ASSOC) {
return $this->query->fetchAll($fetchMode);
}
}
Хотяя не вижу большого смысла в последних двух.