itmo-php-course/engine/core/DataBase.php
2025-02-21 22:04:23 +03:00

102 lines
2.5 KiB
PHP

<?php
namespace Shalex\Engine;
define('DB_PERSISTENCY', 'true');
define('DB_SERVER', '127.127.126.49');
define('DB_USERNAME', 'music_store');
define('DB_PASSWORD', '123');
define('DB_DATABASE', 'music');
define('PDO_DSN', 'pgsql:host=' . DB_SERVER . ';dbname=' . DB_DATABASE);
class DataBase_
{
private static $db;
// Clear the PDO class instance
public static function Close()
{
self::$db = null;
}
protected function createTable(\PDO $db)
{
$db->exec("
CREATE TABLE IF NOT EXISTS top_chart (
id INT(4) serial PRIMARY KEY,
name varchar(100),
url varchar(100),
)");
}
public function openDataBase()
{
if (!isset(self::$db)) {
// Execute code catching potential exceptions
try {
// $options = array(\PDO::ATTR_PERSISTENT => DB_PERSISTENCY, \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');
self::$db = new \PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
// self::$db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
// $this->createTable(self::$db);
} catch (\PDOException $e) {
// Close the database handler and trigger an error
self::Close();
trigger_error($e->getMessage(), E_USER_ERROR);
}
}
return self::$db;
}
public function lastInsertId()
{
$db = $this->openDataBase();
return $db->lastInsertId();
}
public function setDataBase($string)
{
$db = $this->openDataBase();
$db->exec($string);
}
public function setBasePrepare($query, $data)
{
$db = $this->openDataBase();
$stmt = $db->prepare($query);
$stmt->execute($data);
}
public function getDataBase($string)
{
$db = $this->openDataBase();
$query = $db->query($string);
if ($query) {
return $query->fetchAll(\PDO::FETCH_ASSOC);
} else {
return false;
}
}
public function rowCount($query, $data)
{
$db = $this->openDataBase();
$stmt = $db->prepare($query);
$stmt->execute($data);
return $stmt->rowCount();
}
public function getBasePrepare($query, $data)
{
$db = $this->openDataBase();
$stmt = $db->prepare($query);
$stmt->execute($data);
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
}
}