diff --git a/config/database.sql b/config/database.sql new file mode 100644 index 0000000..b40cf87 --- /dev/null +++ b/config/database.sql @@ -0,0 +1,43 @@ +-- +-- Create database +-- + +DROP DATABASE IF EXISTS `PHPStarter`; +CREATE DATABASE IF NOT EXISTS `PHPStarter`; + +USE `PHPStarter`; + +-- +-- Create user for database +-- + +DROP USER IF EXISTS 'PHPStarter_user'@'localhost'; +CREATE USER 'PHPStarter_user'@'localhost' IDENTIFIED BY ''; + +GRANT ALL PRIVILEGES ON `PHPStarter`.* TO 'PHPStarter_user'@'localhost'; +FLUSH PRIVILEGES; + +-- +-- Drop tables +-- + +DROP TABLE IF EXISTS `PHPStarter`; + +-- +-- Table structure for 'PHPStarter' +-- + +CREATE TABLE `PHPStarter` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `message` VARCHAR(255) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Reset 'PHPStarter' +-- + +DELETE FROM `PHPStarter`; +ALTER TABLE `PHPStarter` AUTO_INCREMENT = 1; + +INSERT INTO `PHPStarter` (`message`) VALUES +("Welcome to PHPStarter"); diff --git a/public/index.php b/public/index.php index e8d2b9f..da59132 100644 --- a/public/index.php +++ b/public/index.php @@ -1,13 +1,34 @@ +load(); + +use PHPStarter\DB; + +$pdo = DB::connect(); + +$query = "SELECT * FROM `PHPStarter` WHERE `id` = 1"; +$stmt = $pdo->prepare($query); +$stmt->execute(); + +$PHPStarter = $stmt->fetch(); + +?> + - PHPStarter + <?= $PHPStarter->message ?> -

PHPStarter

+

message ?>

diff --git a/src/DB.php b/src/DB.php index 92ca4c2..4003d36 100644 --- a/src/DB.php +++ b/src/DB.php @@ -3,12 +3,24 @@ namespace PHPStarter; use PDO; -use RuntimeException; +use PDOException; class DB { - public static function connect(): PDO - { - throw new RuntimeException("DB connection not implemented yet."); - } + public static function connect(): PDO + { + try + { + $dsn = "mysql:host={$_ENV['DB_HOST']};dbname={$_ENV['DB_NAME']};port={$_ENV['DB_PORT']};unix_socket={$_ENV['DB_SOCKET']}"; + $pdo = new PDO($dsn, $_ENV['DB_USER'], $_ENV['DB_PASS']); + $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); + $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } + catch (PDOException $exception) + { + die("Database connection failed: " . $exception->getMessage()); + } + + return $pdo; + } }